파이썬에서는 파일을 읽고 쓰기 위해 파일 입출력 기능을 제공합니다. 파일을 다루기 위해서는 파일을 열고(open()), 읽거나 쓰는 작업을 수행한 뒤 파일을 닫아야 합니다. 파일 입출력은 텍스트 파일과 바이너리 파일 모두를 지원하며, 다양한 모드를 사용해 데이터를 입출력할 수 있습니다.
1. 파일 열기 (open() 함수)
파일을 사용하기 위해서는 먼저 파일을 열어야 합니다. open() 함수는 파일을 열고, 파일 객체를 반환합니다.
file = open("example.txt", "r") # 읽기 모드로 파일 열기
설명: open() 함수의 첫 번째 인자는 파일 경로, 두 번째 인자는 파일 모드를 나타냅니다.
주요 파일 모드
- "r": 읽기 모드 (파일이 존재하지 않으면 오류 발생)
- "w": 쓰기 모드 (파일이 존재하지 않으면 새로 생성, 기존 파일이 있으면 내용 삭제)
- "a": 추가 모드 (파일이 존재하지 않으면 새로 생성, 파일 끝에 내용 추가)
- "r+": 읽기/쓰기 모드
- "b": 바이너리 모드 (ex. "rb", "wb"로 사용하여 바이너리 파일 읽기/쓰기)
2. 파일 닫기 (close() 함수)
파일을 모두 사용한 후에는 close() 메서드를 사용하여 파일을 닫아야 합니다. 닫지 않으면 데이터 손실이나 메모리 누수가 발생할 수 있습니다.
file = open("example.txt", "r")
# 파일 읽기 작업 수행
file.close()
3. with 문을 사용한 파일 열기
파일 작업 시 with 문을 사용하면, 작업이 끝난 후 자동으로 파일이 닫힙니다. 이 방법은 안전하며, 파일을 닫지 않아 발생하는 오류를 방지합니다.
with open("example.txt", "r") as file:
content = file.read()
print(content)
설명: with 블록이 종료되면 자동으로 file.close()가 호출됩니다.
4. 파일 읽기
파이썬은 파일을 읽기 위해 다양한 메서드를 제공합니다.
🔹 read() 메서드
파일 전체를 문자열로 읽습니다.
with open("example.txt", "r") as file:
content = file.read()
print(content)
설명: read()는 파일의 전체 내용을 읽어 하나의 문자열로 반환합니다.
🔹 readline() 메서드
파일의 한 줄씩 읽습니다.
with open("example.txt", "r") as file:
line = file.readline()
while line:
print(line.strip()) # 각 줄의 공백 제거
line = file.readline()
설명: readline()은 호출할 때마다 한 줄씩 읽습니다. 파일 끝에 도달하면 빈 문자열을 반환합니다.
🔹 readlines() 메서드
파일의 모든 줄을 읽어 리스트로 반환합니다.
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line.strip())
설명: readlines()는 파일의 각 줄을 요소로 가지는 리스트를 반환합니다.
5. 파일 쓰기
파일에 데이터를 쓰려면 쓰기 모드("w" 또는 "a")로 파일을 열어야 합니다.
🔹 write() 메서드
문자열을 파일에 씁니다.
with open("example.txt", "w") as file:
file.write("Hello, World!\\\\n")
file.write("This is a new line.")
설명: write()는 지정한 문자열을 파일에 작성합니다. 새 줄을 추가하려면 \\\\n을 사용해 줄바꿈을 명시적으로 넣어야 합니다.
🔹 writelines() 메서드
리스트의 각 요소를 파일에 씁니다.
lines = ["First line\\\\n", "Second line\\\\n", "Third line\\\\n"]
with open("example.txt", "w") as file:
file.writelines(lines)
설명: writelines()는 리스트에 저장된 여러 줄을 한 번에 파일에 씁니다. 각 요소가 개별 줄로 처리됩니다.
6. 파일에 내용 추가하기 (a 모드)
추가 모드("a")를 사용하면 기존 파일 내용이 유지된 채 파일의 끝에 데이터를 추가할 수 있습니다.
with open("example.txt", "a") as file:
file.write("\\\\nThis is an appended line.")
설명: "a" 모드를 사용하면 파일이 이미 존재할 때, 기존 내용에 영향을 주지 않고 파일 끝에 문자열을 추가합니다.
7. 파일 포인터 위치 제어
파일 포인터는 파일에서 읽기나 쓰기를 할 때 위치를 가리킵니다. seek()와 tell() 메서드를 사용하여 포인터의 위치를 제어할 수 있습니다.
🔹 seek(offset, whence)
파일 포인터의 위치를 이동합니다.
- offset: 이동할 바이트 수
- whence: 기준 위치 (0: 파일 시작, 1: 현재 위치, 2: 파일 끝)
with open("example.txt", "r") as file:
file.seek(5) # 파일의 5바이트 위치로 이동
content = file.read()
print(content)
설명: seek(5)를 사용하여 파일의 5번째 바이트 위치부터 읽습니다.
🔹 tell()
현재 파일 포인터의 위치를 반환합니다.
with open("example.txt", "r") as file:
print(file.tell()) # 파일 포인터의 현재 위치
file.read(5)
print(file.tell()) # 5바이트 읽은 후 위치
설명: tell()은 파일 내 현재 위치를 반환합니다.
8. 바이너리 파일 읽기 및 쓰기
바이너리 파일을 다룰 때는 "rb"(읽기), "wb"(쓰기) 모드를 사용합니다. 주로 이미지나 동영상, 오디오 파일과 같은 비텍스트 파일을 다룰 때 사용됩니다.
# 바이너리 파일 읽기 예제
with open("image.png", "rb") as file:
content = file.read()
print(content[:10]) # 파일의 첫 10바이트를 출력
# 바이너리 파일 쓰기 예제
with open("copy_image.png", "wb") as file:
file.write(content)
설명: "rb" 모드는 바이너리 파일을 읽고, "wb" 모드는 바이너리 파일을 씁니다. 위 예제는 image.png 파일을 읽어 copy_image.png 파일에 복사합니다.
9. 파일 예외 처리
파일 작업 중 파일이 없거나 권한 문제가 발생할 수 있으므로 예외 처리를 통해 오류를 방지할 수 있습니다.
try:
with open("nonexistent.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("파일이 존재하지 않습니다.")
except IOError:
print("파일 입출력 오류가 발생했습니다.")
설명: FileNotFoundError 예외는 파일이 없을 때 발생하고, IOError는 입출력 작업 중 오류가 발생할 때 처리합니다.
파이썬의 파일 입출력 기능을 사용하면 텍스트 파일 및 바이너리 파일을 읽고 쓸 수 있으며, 파일 작업을 안전하게 수행할 수 있도록 다양한 기능을 제공합니다. 파일 입출력 작업을 수행할 때는 항상 파일을 열고 닫는 작업을 철저히 관리해야 합니다. with 문을 사용하면 파일을 안전하고 간편하게 다룰 수 있습니다.
'파이썬 Python' 카테고리의 다른 글
파이썬 가상 환경 (Virtual Environments) 만들고 사용하는 방법 (0) | 2024.11.12 |
---|---|
파이썬 리스트(List) 객체 사용 방법 (0) | 2024.11.12 |
파이썬(Python) 문자열 데이터 타입과 연산자 사용하기 (0) | 2024.11.10 |
Python 파이썬 for 문 사용하기 (1) | 2024.11.08 |
파이썬(Python) PyQt5 QVBoxLayout, QHBoxLayout 레이아웃 사용하기 (1) | 2024.10.26 |
파이썬 Python 숫자형 데이터 타입 (정수, 실수) (1) | 2024.10.25 |
파이썬(Python) PyQt5 QGroupBox 사용해서 위젯 그룹 관리하기 (1) | 2024.10.12 |
파이썬(Python) 기본 개발툴 IDLE 편집기 이용하는 방법 (0) | 2024.10.11 |