Как безопасно открывать/закрывать файлы в 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()

Необходимо, чтобы сколько раз вы открывали файл, нужно закрыть это время.