파일 입출력은 데이터를 파일에 저장하거나, 파일에서 데이터를 읽어오는 작업을 말합니다. 파이썬(Python)에서는 파일을 쉽게 다룰 수 있는 다양한 방법을 제공합니다. 이번 포스팅에서는 파이썬에서 파일을 읽고 쓰는 기본적인 방법과 함께, 안전하게 파일을 처리하는 방법에 대해 알아보겠습니다.
1. 파일 열기와 닫기
파이썬에서 파일을 열기 위해서는 open() 함수를 사용합니다. 파일을 열 때는 파일의 경로와 함께 열기 모드를 지정해야 합니다. 파일 작업이 끝나면 close() 메서드를 사용하여 파일을 닫아야 합니다.
1.1. 파일 열기 모드
- "r": 읽기 모드 (파일을 읽기 위해 엽니다. 파일이 존재하지 않으면 오류가 발생합니다.)
- "w": 쓰기 모드 (파일을 쓰기 위해 엽니다. 파일이 존재하지 않으면 새로운 파일을 생성하고, 파일이 존재하면 내용을 덮어씁니다.)
- "a": 추가 모드 (파일에 데이터를 추가하기 위해 엽니다. 파일이 존재하지 않으면 새로운 파일을 생성합니다.)
- "b": 바이너리 모드 (바이너리 파일을 다룰 때 사용합니다. "rb", "wb" 등과 같이 사용됩니다.)
- "t": 텍스트 모드 (기본 모드로, 텍스트 파일을 다룰 때 사용합니다. "rt", "wt" 등과 같이 사용됩니다.)
1.2. 파일 열기와 닫기 예시
# 파일 열기
file = open("example.txt", "r")
# 파일 작업 수행 (읽기, 쓰기 등)
# 파일 닫기
file.close()
2. 파일 읽기
파일을 읽기 위해서는 open() 함수를 "r" 모드로 사용하여 파일을 연 후, 파일 내용을 읽을 수 있습니다. 파일을 읽는 방법에는 여러 가지가 있습니다.
2.1. read() 메서드
read() 메서드는 파일의 모든 내용을 한 번에 읽어옵니다.
file = open("example.txt", "r")
content = file.read()
print(content)
file.close()
2.2. readline() 메서드
readline() 메서드는 파일에서 한 줄씩 읽어옵니다. 이 메서드를 반복하여 여러 줄을 읽어올 수 있습니다.
file = open("example.txt", "r")
line = file.readline()
while line:
print(line, end="") # 줄바꿈을 방지하기 위해 end="" 사용
line = file.readline()
file.close()
2.3. readlines() 메서드
readlines() 메서드는 파일의 모든 줄을 리스트 형태로 반환합니다. 각 줄은 리스트의 요소로 저장됩니다.
file = open("example.txt", "r")
lines = file.readlines()
for line in lines:
print(line, end="")
file.close()
3. 파일 쓰기
파일에 데이터를 쓰기 위해서는 "w" 또는 "a" 모드로 파일을 열고, write() 또는 writelines() 메서드를 사용합니다.
3.1. write() 메서드
write() 메서드는 문자열을 파일에 씁니다. 파일이 이미 존재하는 경우, "w" 모드는 기존 내용을 덮어쓰고, "a" 모드는 내용을 추가합니다.
file = open("example.txt", "w")
file.write("Hello, Python!\n")
file.write("This is a new line.\n")
file.close()
3.2. writelines() 메서드
writelines() 메서드는 여러 줄을 한꺼번에 파일에 쓸 때 사용됩니다. 리스트 형태의 데이터를 인수로 받아 파일에 씁니다.
lines = ["First line\n", "Second line\n", "Third line\n"]
file = open("example.txt", "w")
file.writelines(lines)
file.close()
4. 파일 입출력에서의 예외 처리
파일을 다룰 때는 파일이 존재하지 않거나, 권한이 없는 경우 예외가 발생할 수 있습니다. 이러한 상황을 처리하기 위해 try-except-finally 구문을 사용하는 것이 좋습니다.
예시
try:
file = open("example.txt", "r")
content = file.read()
print(content)
except FileNotFoundError:
print("파일을 찾을 수 없습니다.")
finally:
file.close()
위 코드에서는 파일을 읽으려고 시도하지만, 파일이 존재하지 않는 경우 FileNotFoundError가 발생하여 예외를 처리합니다. finally 블록에서는 파일을 닫아주는 작업을 수행하여, 예외가 발생하더라도 파일이 안전하게 닫히도록 합니다.
5. with 문을 사용한 파일 처리
파일 입출력에서 with 문을 사용하면, 파일을 열고 닫는 작업을 자동으로 처리할 수 있습니다. with 블록을 벗어날 때 파일이 자동으로 닫히므로, 파일을 안전하게 다룰 수 있습니다.
예시
with open("example.txt", "r") as file:
content = file.read()
print(content)
위 코드에서는 with 문을 사용하여 파일을 열고, file 객체로 파일을 읽습니다. with 블록을 벗어나면 파일이 자동으로 닫힙니다.
6. 바이너리 파일 처리
텍스트 파일이 아닌 이미지, 오디오 파일 같은 바이너리 파일을 다룰 때는 "b" 모드를 사용해야 합니다. 바이너리 파일의 입출력은 텍스트 파일과 유사하지만, 데이터를 읽고 쓸 때는 bytes 형태로 처리됩니다.
바이너리 파일 읽기
with open("image.png", "rb") as file:
data = file.read()
print(data)
바이너리 파일 쓰기
with open("copy.png", "wb") as file:
file.write(data)
위 예시에서는 바이너리 모드로 이미지를 읽어와, 동일한 데이터를 새로운 파일에 씁니다.
결론
이번 포스팅에서는 파이썬에서 파일을 읽고 쓰는 기본적인 방법을 다루었습니다. 파일 입출력은 데이터를 영구적으로 저장하거나, 외부에서 데이터를 불러오는 데 필수적인 기능입니다. try-except-finally 구문과 with 문을 사용하여 안전하고 효율적으로 파일을 다루는 방법을 익히면, 더 견고한 프로그램을 작성할 수 있습니다. 다양한 파일 형식을 다뤄보며 파일 입출력 작업에 익숙해져 보세요!
이 글을 통해 파이썬에서 파일을 다루는 기본적인 방법을 이해하고, 실습을 통해 파일 입출력 작업에 익숙해질 수 있을 것입니다. 직접 다양한 파일을 읽고 써보며 파일 처리의 다양한 상황을 경험해 보세요!
'PYTHON' 카테고리의 다른 글
파이썬 모듈과 패키지의 이해 (0) | 2024.08.15 |
---|---|
파이썬 클래스와 객체 지향 프로그래밍 기초 (0) | 2024.08.15 |
파이썬의 기본 내장 함수 활용법 (0) | 2024.08.15 |
파이썬에서의 예외 처리: try, except, finally (0) | 2024.08.15 |
파이썬 함수 정의와 호출 (0) | 2024.08.15 |