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

Python에서 텍스트 파일 읽고 쓰는 방법 완벽 정리

다른 프로그래밍 언어와 마찬가지로 Python도 파일을 읽고, 쓰고, 접근하기 위한 다양한 내장 함수를 제공합니다. Python이 처리할 수 있는 파일은 크게 두 가지 유형으로 나뉩니다. 바로 일반 텍스트 파일바이너리 파일입니다.

텍스트 파일의 경우 각 줄은 특수 문자인 '\n'(EOL 또는 End Of Line이라고도 함)으로 끝납니다. 반면 바이너리 파일에는 줄 끝을 나타내는 문자가 없으며, 내용을 비트 스트림 형태로 변환하여 데이터를 저장합니다.

이 글에서는 텍스트 파일을 다루는 방법에 대해 자세히 알아보겠습니다.

파일 접근 모드(File Access Modes)

Python에서 파일을 열 때는 목적에 맞는 접근 모드를 지정해야 합니다. 주요 모드는 다음과 같습니다.

번호 모드 및 설명
1

r

읽기 전용 모드입니다. 텍스트 파일을 읽기 위해 열며, 해당 파일이 존재하지 않으면 I/O 오류가 발생합니다.

2

r+

읽기와 쓰기를 모두 지원하는 모드입니다. 파일이 존재하지 않으면 I/O 오류가 발생합니다.

3

w

쓰기 전용 모드입니다. 파일이 없으면 새로 생성한 후 작성을 시작하고, 파일이 이미 있으면 기존 내용을 모두 지우고 처음부터 다시 작성합니다.

4

w+

쓰기와 읽기를 모두 지원하는 모드입니다. 파일이 없으면 새로 생성하며, 파일이 이미 있으면 기존 데이터를 덮어씁니다.

5

a

추가(append) 모드입니다. 파일의 맨 끝에 데이터를 이어서 작성합니다.

6

a+

추가 및 읽기 모드입니다. 파일 끝에 데이터를 추가하는 동시에 파일 내용을 읽을 수도 있습니다.

파일에 데이터 쓰기: write()와 writelines()

이제 writelines() 메서드와 write() 메서드를 사용해 파일에 데이터를 작성하는 방법을 살펴보겠습니다.

예제 코드

#빈 파일을 생성하고 여러 줄을 작성
line1 = 'This is first line. \n'
lines = ['This is another line to store into file.\n',
   'The Third Line for the file.\n',
   'Another line... !@#$%^&*()_+.\n',
   'End Line']
#쓰기 모드('w')로 파일 열기
my_file = open('file_read_write.txt', 'w')
my_file.write(line1)
my_file.writelines(lines) #여러 줄 한 번에 쓰기
my_file.close()
print('Writing Complete')

실행 결과

Writing Complete

줄을 작성한 후에는 추가(append) 모드를 사용해 파일 뒤에 새로운 내용을 덧붙일 수 있습니다.

예제 코드

#파일에 줄 추가하기
line1 = '\n\nThis is a new line. This line will be appended. \n'
#추가 모드('a')로 파일 열기
my_file = open('file_read_write.txt', 'a')
my_file.write(line1)
my_file.close()
print('Appending Done')

실행 결과

Appending Done

파일 내용 읽기: read()와 readline()

마지막으로 read() 메서드와 readline() 메서드를 사용해 파일 내용을 읽는 방법을 알아보겠습니다. read(n)처럼 정수 n을 인자로 전달하면 앞에서부터 n개의 문자만 읽어올 수 있습니다. 또한 seek(0)을 호출하면 파일 포인터를 처음 위치로 되돌려 같은 파일을 반복해서 읽을 수 있습니다.

예제 코드

#파일에서 내용 읽기
#읽기 모드('r')로 파일 열기
my_file = open('file_read_write.txt', 'r')
print('Show the full content:')
print(my_file.read())
#첫 두 줄 출력
my_file.seek(0)
print('First two lines:')
print(my_file.readline(), end = '')
print(my_file.readline(), end = '')
#앞의 25자만 출력
my_file.seek(0)
print('\n\nFirst 25 characters:')
print(my_file.read(25), end = '')
my_file.close()

실행 결과

Show the full content:
This is first line. 
This is another line to store into file.
The Third Line for the file.
Another line... !@#$%^&*()_+.
End Line

This is a new line. This line will be appended. 

First two lines:
This is first line. 
This is another line to store into file.

First 25 characters:
This is first line. 
This

정리하면, Python에서는 open() 함수에 적절한 접근 모드를 지정하는 것만으로 파일을 손쉽게 읽고 쓸 수 있습니다. 파일 작업이 끝난 후에는 반드시 close() 메서드를 호출해 리소스를 해제하는 습관을 들이는 것이 좋습니다.