[python] Python 2.4에서 파일을 안전하게 열고 닫는 방법

저는 현재 Python을 사용하는 서버 중 하나에서 사용할 작은 스크립트를 작성하고 있습니다. 서버에는 Python 2.4.4 만 설치되어 있습니다.

2.5가 나올 때까지 Python을 사용하지 않았으므로 다음 형식에 익숙합니다.

with open('file.txt', 'r') as f:
    # do stuff with f

그러나 with2.5 이전 에는 진술 이 없으며 파일 객체를 수동으로 정리하는 적절한 방법에 대한 예제를 찾는 데 어려움이 있습니다.

이전 버전의 Python을 사용할 때 파일 객체를 안전하게 폐기하는 가장 좋은 방법은 무엇입니까?



답변

docs.python.org 참조 :

파일 작업이 끝나면 f.close ()를 호출하여 파일을 닫고 열린 파일이 차지하는 모든 시스템 리소스를 확보합니다. f.close () 호출 후 파일 객체 사용 시도는 자동으로 실패합니다.

따라서 다음 close()과 함께 우아하게 사용하십시오 try/finally.

f = open('file.txt', 'r')

try:
    # do stuff with f
finally:
    f.close()

이렇게하면 # do stuff with f예외가 발생 하더라도 f제대로 닫히게됩니다.

참고 open나타납니다 외부try. 경우 open자체가 예외를 발생, 파일이 오픈되지 않아 폐쇄 할 필요가 없습니다. 또한 open예외가 발생하면 그 결과가 할당 되지 않으며f 를 호출하는 것은 오류 f.close()입니다.


답변

위의 솔루션에서 여기에서 반복됩니다.

f = open('file.txt', 'r')

try:
    # do stuff with f
finally:
   f.close()

파일을 성공적으로 연 후 시도하기 전에 나쁜 일이 발생하면 (알지 못합니다 …) 파일이 닫히지 않으므로 더 안전한 해결책은 다음과 같습니다.

f = None
try:
    f = open('file.txt', 'r')

    # do stuff with f

finally:
    if f is not None:
       f.close()


답변

다음과 함께 사용하는 경우 문서에 따라 파일을 닫을 필요가 없습니다.

파일 객체를 다룰 때 with 키워드를 사용하는 것이 좋습니다. 이는 도중에 예외가 발생하더라도 제품군이 완료된 후 파일이 제대로 닫히는 이점이 있습니다. 또한 동등한 try-finally 블록을 작성하는 것보다 훨씬 짧습니다.

>>> with open('workfile', 'r') as f:
...     read_data = f.read()
>>> f.closed
True

더보기 : https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects


답변

다음은 사용 방법 open과 “pythonclose

from sys import argv
script,filename=argv
txt=open(filename)
print "filename %r" %(filename)
print txt.read()
txt.close()
print "Change the file name"
file_again=raw_input('>')
print "New file name %r" %(file_again)
txt_again=open(file_again)
print txt_again.read()
txt_again.close()

파일을 몇 번 열 었는지 해당 시간을 닫아야합니다.


답변