Python에서 파일 입출력(File IO) 읽고 쓰는 방법
Language/Python2024. 8. 21. 20:06파일을 읽고 쓰는 기능은 데이터를 저장하고 읽어오는 과정에서 많이 사용합니다. 본 글에서는 파이썬(Python
)에서 파일 입출력(File IO
)을 하는 방법에 대해 소개합니다.
파일 열기와 닫기
파일을 다루기 위해서는 먼저 파일을 열어야 합니다. 파이썬에서는 open()
함수를 사용하여 파일을 열 수 있습니다.
파일을 연 후에는 리소스 낭비를 막기 위해 반드시 닫아야 하며, 이를 위해 close()
메서드를 사용합니다. 파일을 열 때는 모드를 지정할 수 있으며, 읽기(r
), 쓰기(w
), 추가(a
), 바이너리(b
) 등의 모드가 있습니다.
# 파일 열기
file = open('example.txt', 'r', encoding='utf-8')
# 파일 닫기
file.close()
파일 열기 모드
- r: 읽기 모드
- w: 쓰기 모드
- a: 이어서 쓰기(내용 추가) 모드
- b: 바이너리 모드 (일반적으로 이미지 혹은 영상 파일을 처리할 때 사용)
with 구문을 사용하여 파일 여닫기 (권장)
파일을 열고 나서는 반드시 닫아줘야 하며, 그렇지 않으면 메모리 누수가 발생할 수 있습니다. 이를 방지하기 위해 with
구문을 사용할 수 있습니다.
# with 구문을 사용한 파일 열기 (with 문을 모두 수행하면, 자동으로 파일이 닫힘)
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
with
구문을 사용하면 코드 블록이 끝날 때 자동으로 파일이 닫히므로, 파일을 닫는 것을 잊더라도 리소스가 낭비되지 않습니다.
파일 읽기
파일을 읽는 방법은 여러 가지가 있습니다. read()
, readline()
, readlines()
등의 메서드를 사용하여 파일 내용을 읽을 수 있습니다.
# 전체 파일 내용 읽기
with open('example.txt', 'r', encoding='utf-8') as file:
content = file.read()
print(content)
위 코드는 파일의 모든 내용을 읽어서 출력합니다. 만약 파일이 큰 경우, read()
를 사용하면 메모리 문제를 일으킬 수 있습니다. 이때는 파일을 한 줄씩 읽어들이는 readline()
이나 전체를 리스트로 반환하는 readlines()
를 사용하면 됩니다.
# 파일을 한 줄씩 읽기
with open('example.txt', 'r', encoding='utf-8') as file:
line = file.readline()
while line:
print(line.strip()) # 줄 끝의 개행 문자를 제거하고 출력
line = file.readline()
# 파일을 한꺼번에 읽어 리스트로 반환
with open('example.txt', 'r', encoding='utf-8') as file:
lines = file.readlines()
for line in lines:
print(line.strip())
파일 쓰기
파일에 데이터를 쓰고(write) 싶을때는, 쓰기 모드(w
)나 추가 모드(a
)를 사용할 수 있습니다.
# 파일에 쓰기 (기존 내용 덮어쓰기)
with open('example.txt', 'w', encoding='utf-8') as file:
file.write('Hello, world!\n')
file.write('안녕하세요')
# 파일에 추가하기 (기존 내용 유지하고 덧붙임)
with open('example.txt', 'a', encoding='utf-8') as file:
file.write('\n내용을 추가해볼게요')
코드 주석에서 설명한 것과 같이, '쓰기'와 '추가'의 차이점은 기존 내용을 덮어씌울지 혹은 기존 내용을 유지하고 그 다음에 내용을 추가할 지, 차이가 있습니다.
위 코드에서 write()
메서드는 문자열만 파일에 쓸 수 있습니다. 따라서, 숫자나 리스트 등을 쓰고 싶다면, 문자열로 변환하여야 합니다.
# 숫자와 리스트를 파일에 쓰기
number = 123
my_list = [1, 2, 3, 4, 5]
with open('example.txt', 'w', encoding='utf-8') as file:
file.write(str(number) + '\n')
file.write(', '.join(map(str, my_list)) + '\n')
'Language > Python' 카테고리의 다른 글
PyInstaller로 파이썬 코드를 exe 파일로 빌드하기 (0) | 2024.08.23 |
---|---|
파이썬의 모듈(module)과 패키지(package) (0) | 2024.08.23 |
Python에서 예외 발생시키는 방법 (raise Exception) (0) | 2024.08.22 |
Python에서 예외 처리하는 방법 (try ~ except) (0) | 2024.08.22 |
파이썬 특징과 배워야하는 이유 (2) | 2023.10.19 |
IT 기술에 대한 글을 주로 작성하고, 일상 내용, 맛집/숙박/제품 리뷰 등 여러가지 주제를작성하는 블로그입니다. 티스토리 커스텀 스킨도 개발하고 있으니 관심있으신분은 Berry Skin을 검색바랍니다.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!