본문 바로가기
이론 & 팁

아티스트를 위한 파이썬과 PyQt5: 4강 - 파일 입출력, 예외 처리, 그리고 주요 자료구조

by 아트하는 개발자 2024. 8. 16.

강의 목표

  • 파일을 열고, 읽고, 쓰는 방법을 익히고, 이를 활용한 간단한 프로그램을 작성할 수 있습니다.
  • 프로그램이 예기치 않은 상황에서도 오류 없이 동작할 수 있도록 예외를 처리하는 방법을 배웁니다.
  • 파이썬에서 자주 사용하는 자료구조인 리스트, 딕셔너리, 튜플, 집합의 사용법을 익힙니다.

목차

  1. 파일 입출력
    1. 파일 열기 및 닫기
    2. 파일 읽기 및 쓰기
    3. with 문을 사용한 안전한 파일 처리
  2. 예외 처리
    1. try, except 문을 사용한 예외 처리
    2. else와 finally 절의 사용
  3. 자료구조: 리스트, 딕셔너리, 튜플, 집합
    1. 리스트 (List)
    2. 딕셔너리 (Dictionary)
    3. 튜플 (Tuple)
    4. 집합 (Set)

 

파일 입출력

파일 열기 및 닫기

파일을 열고, 읽고, 쓰는 방법을 배워봅시다. 파일을 열 때는 open() 함수를 사용하며, 작업이 끝나면 close()를 통해 파일을 닫아야 합니다.

# 파일 열기
file = open('example.txt', 'r')  # 읽기 모드로 파일 열기

# 파일 내용 읽기
content = file.read()
print(content)

# 파일 닫기
file.close()

파일 읽기 및 쓰기

파일에 데이터를 쓰고, 다시 읽어오는 방법입니다.

# 파일 쓰기
file = open('example.txt', 'w')
file.write('Hello, world!')
file.close()

# 파일 읽기
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

with 문을 사용한 안전한 파일 처리

with 문을 사용하면 파일을 자동으로 닫을 수 있어, 코드가 더 안전해집니다. 조금 모르겠죠? 파이썬에서 파일을 다룰 때, 파일을 열고(open()), 작업이 끝난 후에 반드시 파일을 닫아야 합니다(close()). 파일을 닫지 않으면 메모리 누수나 파일 손상, 다른 프로그램에서 파일을 사용할 수 없는 문제가 발생할 수 있습니다.

 

위 내용처럼 일반적으로는 open()과 close()를 사용합니다. 하지만 특정 상황에서 close()가 호출 되지 않고 코드가 끝나버리는 경우가 있습니다. 그렇기 때문에 with을 사용합니다. 

with open('example.txt', 'r') as file:
    content = file.read()
    print(content)

 

with 문은 컨텍스트 관리자라고 불리는 기능을 사용하여, 코드 블록이 끝나면 파일을 자동으로 닫아 줍니다. 예외가 발생하더라도 파일을 안전하게 닫을 수 있습니다.

 

예외 처리

try, except 문을 사용한 예외 처리

예외 처리는 프로그램이 오류로 인해 중단되지 않도록 도와줍니다.

try:
    file = open('nonexistent_file.txt', 'r')
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")

else와 finally 절의 사용

예외가 발생하지 않았을 때 실행할 코드와, 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성할 수 있습니다.

try:
    file = open('example.txt', 'r')
except FileNotFoundError:
    print("파일이 존재하지 않습니다.")
else:
    content = file.read()
    print(content)
finally:
    file.close()

 

with를 사용하지 않고 try, except를 이용해서 닫을 수도 있습니다

 

자료구조: 리스트, 딕셔너리, 튜플, 집합

자료구조는 파이썬에서 데이터를 효율적으로 저장하고 관리하기 위해 매우 중요합니다. 2강에서 기본적인 데이터 타입을 배웠다면, 이제는 그보다 더 복잡하고 유용한 데이터 구조들을 배워볼 차례입니다. 이 자료구조들은 데이터를 더욱 수월하게 다루고, 다양한 문제를 해결하는 데 필수적인 도구들입니다.

리스트 (List)

리스트는 순서가 있는 데이터의 모음입니다. 리스트는 생성, 접근, 수정이 가능하며, 슬라이싱을 통해 부분 리스트를 얻을 수 있습니다. 배열과 다른점은 크기가 가변적이라는 점 입니다.

# 리스트 생성
fruits = ['apple', 'banana', 'cherry']

# 리스트 접근
print(fruits[0])  # 출력: apple

# 리스트 수정
fruits[1] = 'blueberry'
print(fruits)  # 출력: ['apple', 'blueberry', 'cherry']

# 리스트 슬라이싱
print(fruits[1:3])  # 출력: ['blueberry', 'cherry']

 

딕셔너리 (Dictionary)

딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 각 값은 고유한 키로 접근할 수 있습니다. 별명으로 값을 찾는다라고 생각하면 조금 쉬울까요?

# 딕셔너리 생성
person = {'name': 'Alice', 'age': 25, 'city': 'New York'}

# 딕셔너리 접근
print(person['name'])  # 출력: Alice

# 딕셔너리 수정
person['age'] = 26
print(person)  # 출력: {'name': 'Alice', 'age': 26, 'city': 'New York'}

# 키와 값 얻기
print(person.keys())  # 출력: dict_keys(['name', 'age', 'city'])
print(person.values())  # 출력: dict_values(['Alice', 26, 'New York'])

튜플 (Tuple)

튜플은 리스트와 유사하지만, 불변(immutable) 자료구조입니다. 한 번 생성된 튜플의 값은 변경할 수 없습니다. 따라서 변경할 필요가 없는 데이터들을 저장할 때 유용합니다.

# 튜플 생성
my_tuple = (1, 2, 3)

# 튜플 접근
print(my_tuple[0])  # 출력: 1

# 튜플은 불변이므로 값을 변경할 수 없습니다.
# my_tuple[0] = 10  # 오류 발생

집합 (Set)

집합은 중복을 허용하지 않으며, 순서가 없는 자료구조입니다. 중복된 값을 제거하거나, 집합 연산(합집합, 교집합, 차집합)을 수행할 때 유용합니다.

# 집합 생성
my_set = {1, 2, 3, 3}
print(my_set)  # 출력: {1, 2, 3} (중복된 값은 제거됨)

# 집합 연산
set1 = {1, 2, 3}
set2 = {3, 4, 5}
print(set1 | set2)  # 출력: {1, 2, 3, 4, 5} (합집합)
print(set1 & set2)  # 출력: {3} (교집합)
print(set1 - set2)  # 출력: {1, 2} (차집합)

연습문제 

파일 입출력 실습
텍스트 파일을 읽어서 내용을 출력하는 프로그램 작성
파일에 데이터를 저장하고, 그 데이터를 다시 읽어오는 프로그램 작성
예외 처리 실습
잘못된 파일 경로나 없는 파일을 열려고 시도했을 때 발생하는 예외를 처리하는 코드 작성
자료구조 실습
숫자들의 리스트를 생성하고, 그 합을 구하는 프로그램 작성
딕셔너리를 사용해 학생들의 성적을 관리하고, 평균 성적을 계산하는 프로그램 작성
튜플을 사용해 좌표를 나타내고, 그 좌표를 출력하는 프로그램 작성
두 개의 집합을 생성하고, 합집합, 교집합, 차집합을 구하는 프로그램 작성

마무리

이번 강의에서는 파일 입출력과 예외 처리, 그리고 파이썬의 주요 자료구조인 리스트, 딕셔너리, 튜플, 집합에 대해 배웠습니다. 이 개념들은 파이썬 프로그래밍에서 매우 중요하며, 실전에서 자주 사용됩니다. 다음 강의에서는 이러한 개념들을 더 깊이 활용하여 실제 프로젝트에서 어떻게 응용할 수 있는지 배워보겠습니다.

 

FAQ

  • 파일을 안전하게 열고 닫는 방법은 무엇인가요?
    • 답변: with 문을 사용하면 파일을 열고 자동으로 닫을 수 있어, 파일 처리 중 발생할 수 있는 오류를 줄일 수 있습니다.
  • 리스트, 딕셔너리, 튜플, 집합의 차이점은 무엇인가요?
    • 답변: 리스트는 순서가 있는 데이터의 모음이고, 딕셔너리는 키-값 쌍으로 데이터를 저장하는 자료구조입니다. 튜플은 불변의 순서 있는 데이터 모음이며, 집합은 중복을 허용하지 않는 순서 없는 데이터의 모음입니다.
반응형