Как безопасно открывать/закрывать файлы в python 2.4
В настоящее время я пишу небольшой script для использования на одном из наших серверов с помощью Python. На сервере установлен только Python 2.4.4.
Я не начал использовать Python до тех пор, пока не выйдет 2.5, поэтому я привык к форме:
with open('file.txt', 'r') as f:
# do stuff with f
Однако нет инструкции with
до 2.5, и мне не удается найти примеры о том, как правильно очистить файл файл вручную.
Какая наилучшая практика для безопасного хранения файловых объектов при использовании старых версий python?
Ответы
Ответ 1
Используйте 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()
.
Ответ 2
В приведенном выше решении, повторенном здесь:
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()
Ответ 3
Вот пример, приведенный так, как использовать open
и "python close
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()
Необходимо, чтобы сколько раз вы открывали файл, нужно закрыть это время.