저는 현재 Python을 사용하는 서버 중 하나에서 사용할 작은 스크립트를 작성하고 있습니다. 서버에는 Python 2.4.4 만 설치되어 있습니다.
2.5가 나올 때까지 Python을 사용하지 않았으므로 다음 형식에 익숙합니다.
with open('file.txt', 'r') as f:
# do stuff with f
그러나 with
2.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()
파일을 몇 번 열 었는지 해당 시간을 닫아야합니다.