프로그래밍/Python

[Python] 내장 함수를 이용한 텍스트 파일 다루기

채윤아빠 2022. 2. 9. 00:53
728x90
반응형

개요

이번 글에서는 파이썬 표준 라이브러리에 내장되어 있는 함수를 이용하여 텍스트 파일을 읽고 쓰는 방법에 대해서 정리해 둡니다.

파이썬 표준 라이브러리 내장 함수를 이용하기 때문에 별도의 패키지를 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()

참고자료