Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python에서 텍스트 파일 다루기: 열기, 읽기, 쓰기 완벽 정리

텍스트 파일이란 무엇인가?

텍스트 파일은 사람이 읽을 수 있는 문자만으로 구성된 파일을 의미합니다. 그 반대 개념인 바이너리(binary) 파일은 형식이 읽을 수 있는 문자로 이루어지지 않은 모든 파일을 말합니다. 바이너리 파일에는 JPEG나 GIF 같은 이미지 파일, MP3 같은 오디오 파일, Word나 PDF 같은 문서 형식 등이 포함됩니다.

텍스트 파일과 바이너리 파일의 가장 큰 차이점은, 바이너리 파일을 해석하려면 특수한 프로그램이나 해당 형식에 대한 전문 지식이 필요하다는 점입니다. 반면 텍스트 파일은 일반 텍스트를 편집할 수 있는 어떤 프로그램으로도 수정할 수 있으며, Python과 같은 프로그래밍 언어에서도 매우 쉽게 처리할 수 있습니다.

파일 열고 내용 읽기

f = open('my_file.txt', 'r+')
my_file_data = f.read()
f.close()

위 코드는 'my_file.txt'를 읽기 모드로 연 뒤, 파일의 전체 내용을 my_file_data 변수에 저장하고 파일을 닫습니다. Python에서는 파일이 기본적으로 텍스트 모드로 열리기 때문에 별도의 설정 없이 곧바로 읽고 쓸 수 있습니다. read() 함수는 파일 전체를 한 번에 읽어옵니다.

줄 단위로 파일 읽기

f = open('my_file.txt', 'r+')
for line in f.readlines():
    print(line)
f.close()

파일 용량이 크거나 각 줄을 개별적으로 처리해야 할 때는 readlines()를 사용해 한 줄씩 순차적으로 읽는 것이 효율적입니다.

파일에 데이터 쓰기

텍스트 파일에 내용을 작성할 수도 있습니다. 예를 들어 'my_file.txt'의 기존 내용을 덮어쓰고 싶다면 쓰기 모드('w')로 파일을 연 후 작성하면 됩니다.

f = open("my_file.txt", "w")
f.write("My File!")
f.close()

주의할 점은 쓰기 모드('w')로 파일을 열면 기존 내용이 모두 삭제된다는 것입니다. 따라서 기존 데이터를 보존해야 하는 상황이라면 아래의 추가 모드를 사용해야 합니다.

기존 파일에 내용 추가하기

기존 파일의 내용을 유지한 채 새로운 데이터를 덧붙이고 싶다면 추가(append) 모드('a')를 사용합니다. 추가 모드로 파일을 열면 파일 포인터가 자동으로 파일 끝으로 이동하며, 이후 실행되는 모든 write() 문은 파일 맨 끝에 데이터를 추가합니다.

팁: with 문으로 더 안전하게 파일 다루기

with open('my_file.txt', 'r') as f:
    data = f.read()

with 문을 사용하면 코드 블록이 종료될 때 파일이 자동으로 닫히므로 f.close() 호출을 누락할 염려가 없습니다. 실무에서는 예외 발생 시에도 파일이 안전하게 닫히도록 with 문 사용을 권장합니다.