파이썬 파일 입출력 (File I/O): 파일을 다루는 기초
이번 글에서는 파이썬에서 파일 입출력(File Input/Output)을 다루는 방법에 대해 알아보겠습니다. 파일 입출력은 데이터를 외부 파일에서 읽어오거나, 프로그램에서 처리한 결과를 파일에 저장하는 데 필수적인 기능입니다. 파이썬에서는 파일을 쉽게 열고, 읽고, 쓰는 다양한 방법을 제공합니다.
1. 파일 열기 (open 함수)
파일을 사용하려면 먼저 open() 함수를 사용해 파일을 열어야 합니다. 이 함수는 파일 경로와 모드를 인자로 받아 파일 객체를 반환합니다.
기본 구조:
파일객체 = open(파일이름, 모드)
모드:
- "r": 읽기 모드 (기본값) — 파일을 읽기만 할 때 사용.
- "w": 쓰기 모드 — 파일에 데이터를 쓰며, 기존 파일이 있을 경우 내용을 덮어씀.
- "a": 추가 모드 — 기존 파일이 있을 경우 내용 뒤에 데이터를 추가.
- "b": 바이너리 모드 — 바이너리 파일(이미지, 영상 등)을 읽거나 쓸 때 사용. (예: "rb", "wb")
예시:
# 파일 읽기 모드로 열기
file = open("example.txt", "r")
2. 파일 닫기 (close 함수)
파일을 열었으면 작업이 끝난 후 반드시 close() 함수를 호출해 파일을 닫아야 합니다. 파일을 닫지 않으면 데이터가 손실될 수 있고, 리소스 누수가 발생할 수 있습니다.
file = open("example.txt", "r")
# 파일 작업
file.close()
파일을 자동으로 닫아주는 with 문을 사용하는 것이 좋습니다. with를 사용하면 블록이 끝나면 파일이 자동으로 닫힙니다.
with open("example.txt", "r") as file:
# 파일 작업
content = file.read()
3. 파일 읽기
파일에서 데이터를 읽는 방법에는 여러 가지가 있습니다. 파일 내용의 크기나 처리 방식에 따라 적절한 방법을 선택할 수 있습니다.
1) read() 함수
read() 함수는 파일 전체 내용을 하나의 문자열로 읽어옵니다.
with open("example.txt", "r") as file:
content = file.read()
print(content)
2) readline() 함수
readline() 함수는 파일에서 한 줄씩 읽어올 때 사용합니다. 큰 파일을 다룰 때 유용합니다.
with open("example.txt", "r") as file:
line = file.readline()
while line:
print(line.strip()) # 줄 끝의 개행 문자 제거
line = file.readline()
3) readlines() 함수
readlines() 함수는 파일 전체를 읽어 각 줄을 리스트로 반환합니다.
with open("example.txt", "r") as file:
lines = file.readlines()
for line in lines:
print(line.strip())
4. 파일 쓰기
파일에 데이터를 쓸 때는 쓰기 모드("w") 또는 **추가 모드("a")**를 사용합니다.
1) write() 함수
write() 함수는 문자열 데이터를 파일에 씁니다. 기존 파일이 있을 경우 쓰기 모드는 파일 내용을 덮어쓰고, 추가 모드는 기존 내용 뒤에 데이터를 추가합니다.
# 쓰기 모드로 파일 열기
with open("output.txt", "w") as file:
file.write("Hello, World!")
2) writelines() 함수
writelines() 함수는 리스트에 담긴 여러 줄의 문자열을 한 번에 파일에 씁니다.
lines = ["첫 번째 줄\n", "두 번째 줄\n", "세 번째 줄\n"]
with open("output.txt", "w") as file:
file.writelines(lines)
5. 파일 모드와 예외 처리
파일을 다루다 보면 파일이 없거나, 파일을 쓰는 중에 오류가 발생할 수 있습니다. 이런 경우에 대비해 try-except를 사용해 예외 처리를 할 수 있습니다.
try:
with open("non_existent_file.txt", "r") as file:
content = file.read()
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
except IOError:
print("파일을 읽거나 쓰는 중에 오류가 발생했습니다.")
6. 바이너리 파일 읽기 및 쓰기
파이썬에서는 이미지나 동영상 같은 바이너리 파일도 읽고 쓸 수 있습니다. 이때는 파일 모드에 "b"를 추가합니다.
바이너리 파일 읽기 예시:
with open("image.jpg", "rb") as file:
binary_data = file.read()
바이너리 파일 쓰기 예시:
with open("output.jpg", "wb") as file:
file.write(binary_data)
7. 파일 존재 여부 확인하기
파일을 열기 전에 파일이 실제로 존재하는지 확인하는 것이 좋습니다. 이를 위해 os 모듈의 path.exists() 함수를 사용할 수 있습니다.
import os
if os.path.exists("example.txt"):
with open("example.txt", "r") as file:
content = file.read()
else:
print("파일이 존재하지 않습니다.")
결론
파일 입출력은 데이터를 읽고 쓰는 데 필수적인 기능으로, 파이썬에서는 매우 간단하게 처리할 수 있습니다. open() 함수로 파일을 열고, 다양한 읽기/쓰기 방법을 통해 파일 데이터를 다룰 수 있습니다. 또한, with 문을 사용하면 파일을 자동으로 닫을 수 있어 더 안전하고 간결한 코드를 작성할 수 있습니다.
다음 글에서는 **객체지향 프로그래밍(OOP)**을 주제로, 파이썬에서 클래스와 객체를 사용해 코드를 구조화하는 방법을 살펴보겠습니다.
'프로그래밍 공부 > pyhton' 카테고리의 다른 글
파이썬 기초 - 데코레이터(Decorator) (0) | 2024.09.13 |
---|---|
파이썬 기초 - 객체지향 프로그래밍(OOP), 클래스와 객체 (0) | 2024.09.11 |
파이썬 기초 - 예외 처리(Exception Handling) (1) | 2024.09.11 |
파이썬 기초 - 모듈(module)과 패키지(package) (0) | 2024.09.10 |
파이썬 기초 - 함수(Function) (0) | 2024.09.10 |