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