2021. 1. 23. 14:32

1. 파일을 줄별로 읽어서 리스트에 저장

input_file = 'test.txt'
with open(input_file) as f_in:
    txt = list(line.strip() for line in f_in)

이렇게 하면 파일이 줄별로 리스트 txt에 저장이 됩니다. 제가 가장 많이(90% 이상) 사용하는 방법입니다. strip() 함수를 이용하면 줄바꿈('\n')이 삭제가 됩니다. 저는 주로 이 코드를 아래처럼 함수로 미리 지정하여 사용합니다.

def import_file(input_file):
    with open(input_file) as f_in:
        txt = list(line.strip() for line in f_in)
    return txt

input_file = 'test.txt'  # 파일 이름
txt = import_file(input_file)

2. 파일 통째로 읽기

input_file = 'test.txt'
with open(input_file) as f_in:
    txt = f_in.read()
    
# 정규식을 이용하여 문자열 txt를 검색합니다.
import re
match = re.search(r'Search', txt)

파일을 통째로 읽는 방법입니다. 문자열 txt에 저장이 됩니다.
저는 주로 파일을 정규식으로 검색하여 필요한 부분을 추출해낼 때 이용합니다.

3. 큰 파일을 줄 별로 읽기

input_file = 'test.txt'
with open(input_file) as f_in:
    for line in f_in:
        # Do something with the line

기가바이트 단위로 파일을 읽을 때에는 1번 방법을 이용하게 되면 파일 전체를 메모리에 담아야 하기 때문에, 컴퓨터에 부담이 가고, 속도가 느려집니다. 위 방법을 이용하면 파일 전체를 읽는 것이 아니라 한줄에 대해 코드가 끝나면, 그 줄은 메모리에서 삭제를 하고 다음줄로 넘어가기 때문에, 메모리에 부담이 없습니다.

4. 파일 쓰기

test_txt = ['abcd', 'efgh']
outfile = 'output.txt'
with open(outfile, 'w') as outhandle:
    for row in test_txt:
        outhandle.write('{}\n'.format(row))

파일에 들어갈 내용은 주로 문자열의 리스트로 만듭니다. 리스트의 각 element가 한줄 한줄이 되는 것이죠.

 

---
제 블로그는 광고를 넣는 대신 "Buy Me a Coffee"을 통해 후원으로 운영되고 있습니다. 소규모 금액도 큰 동기부여가 됩니다.

https://www.buymeacoffee.com/harryincupboard