Как закрыть файл в python без назначения переменной

Как закрыть файл в python после его открытия следующим образом:

line = open ("file.txt", "r"). readlines() [7]

6
Вы этого не сделаете. Вы позволяете Python закрывать его для вас, либо во время сбора мусора, либо когда программа заканчивается. Обычно это не проблема, поэтому многие примеры кода в документах Python делают это так.
добавлено автор Tim Pietzcker, источник
@eryksun: Нет, вы не можете зависеть от этого! Ваш файловый объект может быть частью ссылочного цикла, и в этом случае он не будет уничтожен, когда привязка выходит за рамки. Затем он будет жить до тех пор, пока циклический сборщик мусора не позаботится об этом, что может быть долгое время в будущем.
добавлено автор Björn Lindqvist, источник
@Tim Pietzcker: В CPython вы можете зависеть от подсчета ссылок, но это деталь реализации, которая не будет работать в других реализациях, таких как PyPy или Jython. В этом случае открытие слишком большого количества файлов может исчерпать доступные дескрипторы файлов.
добавлено автор eryksun, источник
проверить этот ответ stackoverflow.com/questions/4599980/&hellip ;
добавлено автор unni, источник

2 ответы

Лучше всего использовать диспетчер контекста. Это автоматически закроет файл в конце блока и не будет полагаться на детали реализации коллекции garbarge

with open("file.txt", "r") as f:
    line = f.readlines()[7]
5
добавлено
Что написал @Tim Pietzcker. Я знаю об этом методе, однако мне было интересно, есть ли другой способ обойти это, как я упоминал в названии, без назначения экземпляра файла переменной.
добавлено автор 0sh, источник

Существует несколько способов, например, вы можете просто использовать f = open (...) и del f .

Если ваша версия Python поддерживает ее, вы также можете использовать оператор with :

with open("file.txt", "r") as f:
    line = f.readlines()[7]

Это автоматически закрывает ваш файл.

EDIT: I don't get why I'm downvoted for explaining how to create a correct way to deal with files. Maybe "without assigning a variable" is just not preferable.

1
добавлено
Он явно спрашивает, как это сделать, не присваивая переменную.
добавлено автор Tim Pietzcker, источник
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community