[Python] 내장 함수를 이용한 텍스트 파일 다루기
개요
이번 글에서는 파이썬 표준 라이브러리에 내장되어 있는 함수를 이용하여 텍스트 파일을 읽고 쓰는 방법에 대해서 정리해 둡니다.
파이썬 표준 라이브러리 내장 함수를 이용하기 때문에 별도의 패키지를 import 할 필요 없이 코드를 작성하여 실행할 수 있는 장점이 있습니다.
텍스트 파일 읽어오기
텍스트 파일을 열어서 파일 내의 내용을 읽어오기 위하여 "open()" 함수를 이용합니다.
open(file, mode='r', buffering=- 1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
"open()" 함수의 mode 매개변수에 텍스트 모드('w', 'r', 'wt', 'rt', 등)로 파일을 열면, io.TextIOBase 클래스 인스턴스가 반환됩니다. 반환된 객체를 통하여 파일 내의 텍스트를 읽을 수 있습니다.
다음은 간단하게 파일을 열고, 파일 내의 모든 텍스트를 읽어오는 예제입니다.
data_str = ''
with open('./demo/data1.csv', 'r') as text_file:
data_str = text_file.read()
text_file.close()
텍스트 파일 쓰기
파일에 텍스트 내용을 쓰기 위해서도 "open()" 함수를 이용합니다. 단지 mode 매개변수에 ('w', 'w+', 'wt' 등)으로 파일을 엽니다.
다음은 open() 함수 호출 시, mode 매개변수에 따라 반환되는 인스턴스의 차이를 보여줍니다.
>>> wf = open('test.txt', 'w+t')
>>> type(wf)
<class '_io.TextIOWrapper'>
>>> wf.close()
>>> wf = open('test.txt', 'w')
>>> type(wf)
<class '_io.TextIOWrapper'>
>>> wf.close()
>>> wf = open('test.txt', 'w+')
>>> type(wf)
<class '_io.TextIOWrapper'>
>>> wf.close()
>>> wf = open('test.txt', 'w+b')
>>> type(wf)
<class '_io.BufferedRandom'>
>>> wf.close()
mode 매개변수에 따라서 파일을 새로만들지 결정되는데, "w+", "w+t" 등과 같이 "+" (append)가 추가되어 있어야만 현재 파일의 마지막부터 추가로 쓰게 됩니다.
open() 함수로 연 텍스트 파일에 대하여 반환되는 TextIOWrapper 인스턴스를 이용하여 텍스트를 파일에 쓸 수 있습니다. 텍스트를 쓸 때는 write()나 writelines() 등의 함수를 이용할 수 있습니다.
다음은 간단하게 주어진 텍스트를 파일로 쓰는 에제입니다.
data_str = '파일에 텍스트 쓰기 예제'
with open('text_write_demo.txt', 'w') as text_file:
text_file.write(data_str)
text_file.close()
참고자료
- "파이썬 텍스트(txt) 파일 읽기 방법 정리(for문, read, readline, readlines)":https://jimmy-ai.tistory.com/232
- "파이썬 표준 라이브러리 - 내장 함수":https://docs.python.org/ko/3/library/functions.html
- "io — 스트림 작업을 위한 핵심 도구":https://docs.python.org/ko/3/library/io.html