Python - with로 파일 열고 닫기

파이썬에서 파일을 사용한 후에는 명시적으로 close()를 호출해서 파일을 닫아줘야 합니다. 그렇지 않으면 시스템 자원이 반환되지 않아 fd leak 등의 문제가 발생할 수 있습니다.

file = open("/home/mjs/test/TextFile.txt", "r")
file.readlines()
file.close()

with 키워드를 사용하여 파일을 열면, 파일을 사용하지 않을 때 자동으로 close()를 호출하여 닫아줍니다. 실수로 close() 호출을 빠트리는 일이 없고, 명시적으로 호출하지 않아도 되기 때문에 코드가 간결합니다.

with로 파일을 열고 닫는 방법에 대해서 알아보겠습니다.

1. with로 파일 열고 닫기 (read mode)

아래와 같이 파일을 열 때 with를 사용하여 파일을 열 수 있습니다. with block 안에서 파일에 접근할 때는 file 변수로 접근하면 됩니다. 변수 이름은 as <variable name>에서 변경할 수 있습니다. with block을 빠져나오면 file.close()가 자동 호출되어 파일이 닫힙니다.

with open("/home/mjs/test/TextFile.txt", "r") as file:
    strings = file.readlines()
    print(strings)

open(file_path, access_mode)은 인자로 파일 경로와 access mode를 받으며, "r"은 read mode로, 파일을 읽을수만 있습니다.

2. with로 파일 열고 닫기 (write mode)

다음은 write mode("w")로 파일을 열고 문자열을 저장하는 예제입니다.

with open("/home/mjs/test/TextFile.txt", "w") as file:
    file.write("Hello~ \n")
    file.write("World!")

파일을 출력해보면 다음과 같이 출력됩니다.

$ cat TextFile.txt
Hello~
World!

Access mode "w"로 파일을 열면, 기존 파일에 저장된 내용은 지워지고 새로 추가된 텍스트만 저장이 됩니다.

3. with로 파일 열고 닫기 (append mode)

Access mode "a"는 append라는 의미로 파일을 쓸 때 마지막에 텍스트를 추가합니다. 즉, 이전에 저장된 내용이 삭제되는 "w"와는 다릅니다.

예를 들어, 현재 TextFile.txt 파일의 내용이 아래와 같을 때,

Hello~
World!

다음 코드를 실행하면, 이전에 저장된 내용은 삭제되지 않고 마지막에 텍스트가 추가됩니다.

with open("/home/mjs/test/TextFile.txt", "a") as file:
    file.write("Hello~ \n")
    file.write("World!")
    file.close()

코드 실행 후 파일을 확인해보면 다음과 같이 보입니다.

$ cat TextFile.txt
Hello~
World!Hello~
World!
Loading script...

Related Posts

codechachaCopyright ©2019 codechacha