Programming Language/Python

파이썬, 파일 읽고 쓰기

알파해커 테크노트 2020. 3. 2. 22:45
반응형

파이썬에서 파일을 읽고 쓸 땐, 기본적으로, 내장 함수인 open을 사용한다.

 

파일 쓰기 

파일 쓰기에는 크게 두 가지로 나누어진다. (1) 기존에 있던 내용을 삭제하고 쓰기, (2) 기존에 있던 내용에 이어서 쓰기. 이 둘은 open 함수의 파라미터로 구분할 수 있다.

 

1. 기존에 있던 내용을 삭제하고 쓰기

파일을 새로 생성해서 쓰거나, 같은 이름의 파일이 있더라도 기존의 내용을 모두 삭제하고 내용을 새로 쓰고 싶다면, 파일명 다음의 파라미터로 "w" 옵션을 입력한다. 그리고 실제로 내용을 입력할 때는 write 함수를 이용한다.

file = open("file_name.txt", "w")
file.write("hello world")
file.close()

 

파일에 내용을 다 쓴 후에는 close 함수를 이용해서, 열려있는 파일 객체를 닫아준다. 사실, close 함수를 쓰지 않아도, 파이썬 프로그램이 종료되면 자동으로 파일이 닫히기는 하지만, 열려있는 파일 객체를 잘못 재사용하는 경우에는 오류가 날 수도 있기 때문에 닫아주는 것이 좋다.

 

2. 기존에 있던 내용에 이어서 쓰기

기존에 있던 파일의 내용을 삭제하지 않고, 이어서 작성하고 싶은 경우에는 open 함수에 "a" 옵션을 입력한다.

file = open("file_name.txt", "a")
file.write("hello world2")
file.close()

 

파일 읽기

파일 내용을 읽을 때도 두 가지 방식으로 나누어진다. (1) 파일의 내용을 한줄씩 읽어서 처리하는 방식, (2) 여러 줄을 한번에 다 읽어와서 처리하는 방식.

 

1. 한 줄씩 읽기

파일의 내용이 여러 줄 일수도 있으니까, while문을 이용해서 돌린다. 마지막 라인이 끝나면 while문을 빠져나와서 파일을 닫는다.

file = open("./file_name.txt", "r")

while True:
    line = file.readline()
    if line == '':
        break

    print(line)

file.close()

 

2. 한번에 여러줄 읽기

두 번째 방법은 한번에 파일의 내용을 내용을 여러 줄로 쭉 읽어와서 리스트로 담고, 그 리스트를 하나씩 보는 것이다. 개인적으로는 이 방법이 더 깔끔한 것 같다.

file = open("./file_name.txt", "r")
lines = file.readlines()
for line in lines:
	print(line)
file.close()

 

좀 더 파이썬스럽게

위에 언급했던 것 처럼, 파일을 열었으면, 닫아주는 것이 좋다. 불필요한 오류를 예방하기 위해서다.

원하는 작업이 끝날 때마다 어차피 항상 닫아줘야 하는 거라면, 자동으로 닫아지면 편할 것 같은데, 방법이 없을까?

있다. with를 쓰는 것이다.

 

아래와 같이 with를 쓰게되면, 해당 with 블록을 벗어날 때, 파일이 close 된다.

with open("./file_name.txt", "w") as file:
	file.write("Hello, world")

 

반응형