[Python] 파일 처리(생성 및 수정)


파일을 생성하거나 열 때 모드를 정해줄 수 있습니다. 파일에 들어갈 데이터가 텍스트면 텍스트모드, 그림이면 바이너리 모드로 설정할 수 있습니다.

모드 설명
t 텍스트
b 바이너리
r 읽기
w 쓰기
a 이어쓰기
+ 읽기,쓰기

파일 열기/쓰기/닫기

파일을 열 때는 open(), 닫을 때는 close() 함수를 사용합니다. 파일을 쓸 때는 write() 함수를 사용합니다.

file = open("file_create.txt","w") #파일 열기
file.write("Hello world!!") #파일에 텍스트 작성
file.close() #파일 닫기

위의 코드를 실행하면 아래 그림과 같이 폴더 안에 "file_create.txt"파일이 생기고, 내용도 작성되어 있는 것을 확인할 수 있습니다.

file_create.txt 생성
file_create.txt 내용

file_create.txt 파일에 새로운 내용을 추가하기 위해 이어쓰기(a)모드를 사용하여 아래와 같이 작성할 수 있습니다.

file2 = open("file_create.txt","a") #파일 열기
file2.write("Python Python Python\n오후 10시 36분") #파일에 텍스트 작성
file2.close() #파일 닫기

file_create.txt 내용 추가

 

파일 읽기

텍스트 파일을 읽어올 때는 read() 함수를 사용합니다.

read_cartoon.txt 내용

file_read = open("read_cartoon.txt","r", encoding='utf-8') #파일 열기
content = file_read.read() #파일 읽기
file_read.close() #파일 닫기
print(content)

#출력값
'''
짱구는 못말려
도라에몽
안녕 자두야
뽀로로
톰과 제리
'''​

참고로 encoding='utf-8'을 넣지 않을 경우 UnicodeDecodeError가 발생할 수도 있습니다.

 

파일을 읽어오는 함수는 read() 외에도 readline()readlines()가 있습니다. read()는 파일을 통째로 읽어오고, readline()은 한 줄만 반환합니다., readlines()는 파일을 통째로 읽고, \n문자를 포함하여 리스트로 반환합니다.

file_read = open("read_cartoon.txt","r",encoding='utf-8')
content = file_read.readline()
file_read.close()
print(content)
#출력값
#짱구는 못말려

file_read2 = open("read_cartoon.txt","r",encoding='utf-8')
content2 = file_read2.readlines()
file_read2.close()
print(content2)
#출력값
#['짱구는 못말려\n', '도라에몽\n', '안녕 자두야\n', '뽀로로\n', '톰과 제리\n']

 

with 구문

프로그램을 하다보면 파일을 open()하고 close()하지 않는 실수를 할 수도 있습니다. with 구문을 사용하면 close()를 사용하지 않아도 됩니다. 

with open("with.txt","w") as file: #파일 열기
    file.write("with 구문을 사용하여 작성하는 텍스트파일입니다.") #파일쓰기

with.txt 생성
with.txt 내용