파일 입출력은 데이터를 저장하고 불러오는 데 매우 중요한 역할을 합니다. 파이썬에서는 파일을 읽고 쓰는 작업을 쉽게 수행할 수 있는 내장 함수들을 제공합니다. 이번 글에서는 파일을 읽고 쓰는 기본 방법부터 다양한 파일 모드, 그리고 파일 처리에 유용한 팁까지 자세히 설명하겠습니다.
1. 파일 열기
파이썬에서 파일을 열기 위해서는 'open()' 함수를 사용합니다. 이 함수는 두 개의 주요 인자를 받습니다. 파일 경로와 파일 모드입니다.
파일 모드
- 'r': 읽기 모드(기본값)
- 'w': 쓰기 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용을 지우고 새로 작성)
- 'a': 추가 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용을 추가)
- 'b': 바이너리 모드 (이진 파일을 처리할 때 사용)
- 't': 텍스트 모드 (텍스트 파일을 처리할 때 사용, 기본값)
- 'r+': 읽기/쓰기 모드
파일 열기 예시
# 텍스트 파일 읽기 모드로 열기
file = open('example.txt', 'r')
# 텍스트 파일 쓰기 모드로 열기
file = open('example.txt', 'w')
2. 파일 읽기
파일을 읽는 방법에는 여러 가지가 있습니다. 대표적인 메서드로는 'read()', 'readline()', 'readlines()'가 있습니다.
'read()'
파일의 전체 내용을 문자열로 읽어옵니다.
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close() # 파일 닫기
# 예시 출력:
# Hello, world!
# This is a file reading example.
'readline()'
파일의 한 줄을 읽어옵니다. 반복문과 함께 사용하여 파일의 모든 줄을 하나씩 처리할 수 있습니다.
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip()) # 줄바꿈 제거
line = file.readline()
file.close() # 파일 닫기
# 예시 출력:
# Hello, world!
# This is a file reading example.
'readlines()'
파일의 모든 줄을 리스트로 읽어옵니다. 각 줄은 리스트의 한 요소가 됩니다.
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip())
file.close() # 파일 닫기
# 예시 출력:
# Hello, world!
# This is a file reading example.
3. 파일 쓰기
파일에 데이터를 쓰는 방법에는 'write()'와 'writelines()' 메서드가 있습니다.
'write()'
문자열을 파일에 씁니다.
file = open('example.txt', 'w')
file.write("Hello, world!\n")
file.write("This is a file writing example.\n")
file.close() # 파일 닫기
위 코드는 'example.txt' 파일에 두 줄의 문자열을 씁니다. 파일이 존재하지 않으면 새로 생성되고, 이미 존재하면 내용을 지우고 새로 작성합니다.
'writelines()'
리스트의 각 요소를 파일에 씁니다. 각 요소가 파일의 한 줄이 됩니다.
lines = ["Hello, world!\n", "This is a file writing example.\n"]
file = open('example.txt', 'w')
file.writelines(lines)
file.close() # 파일 닫기
위 코드는 리스트의 각 문자열을 'example.txt' 파일에 씁니다.
4. 'with' 문 사용하기
'with' 문은 파일을 열고 작업을 수행한 후 자동으로 파일을 닫아주는 컨텍스트 매니저입니다. 이는 파일을 사용한 후에 'close()' 메서드를 호출하는 것을 잊지 않도록 해주며, 파일의 안전한 관리를 돕습니다.
with open('example.txt', 'r') as file:
content = file.read()
print(content)
# 예시 출력:
# Hello, world!
# This is a file reading example.
위 예제에서 'with' 문을 사용하면 파일이 자동으로 닫히므로, 파일을 수동으로 닫을 필요가 없습니다.
'with' 문을 사용하는 것과 사용하지 않는 것의 차이점
- 리소스 관리: 'with' 문을 사용하면 파일이 자동으로 닫혀 리소스 누수를 방지할 수 있습니다.
- 예외 처리: 'with' 문은 파일 사용 중 예외가 발생하더라도 자동으로 파일을 닫아주므로 안전합니다.
- 가독성: 'with' 문을 사용하면 파일 입출력 코드를 더 간결하고 명확하게 작성할 수 있습니다.
5. 파일 모드 결합
파일 모드는 여러 개의 옵션을 결합하여 사용할 수 있습니다. 예를 들어, 바이너리 모드로 파일을 읽고 쓰려면 'rb', 'wb', 'ab' 모드를 사용할 수 있습니다.
# 바이너리 파일 읽기
with open('example.bin', 'rb') as file:
binary_data = file.read()
# 바이너리 파일 쓰기
with open('example.bin', 'wb') as file:
file.write(b'\x00\xFF\xAB\xCD')
6. 예외 처리
파일 작업 중에는 다양한 오류가 발생할 수 있습니다. 예외 처리를 통해 오류를 안전하게 처리할 수 있습니다.
try:
with open('non_existing_file.txt', 'r') as file:
content = file.read()
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
except IOError:
print("파일을 읽는 중 오류가 발생했습니다.")
위 코드는 파일이 존재하지 않거나 읽기 중 오류가 발생할 경우에 대한 예외 처리를 포함하고 있습니다.
파이썬의 파일 읽기와 쓰기에 대해서 소개했습니다. 'open()' 함수와 다양한 파일 모드를 통해 파일을 읽고 쓸 수 있으며, 'with' 문과 예외 처리를 통해 안전하게 파일을 관리할 수 있습니다. 'with' 문을 사용하면 코드가 간결해지고, 리소스를 자동으로 관리할 수 있어 파일 처리가 더욱 안전해집니다. 이상입니다.
'Python > 문법' 카테고리의 다른 글
[Python] 파이썬 예외 처리 정리 및 사용법 (0) | 2024.08.05 |
---|---|
[Python] 파이썬 클래스 사용법 (+ 상속, 다형성) (0) | 2024.08.03 |
[Python] 파이썬 함수 기능 정리 및 예제 (0) | 2024.08.02 |
[Python] 파이썬 while문 정리 및 예제 (0) | 2024.08.01 |
[Python] 파이썬 for문 정리 및 예제 (0) | 2024.07.31 |
댓글