Sergomen
@Sergomen
Просто делай добро и оно вернётся

Можно ли использовать open('file','r').read() в python?

Вопрос возможно немного глуповат но: я сегодня вместо обычного
f = open('file','r')
text = f.read()
f.close()

попробовал
text = open('file','r').read()
и меня заинтересовало можно ли так делать и закрывается ли файл самостоятельно? или может его всеравно както вручную закрыть надо?
  • Вопрос задан
  • 81 просмотр
Решения вопроса 2
trapwalker
@trapwalker Куратор тега Python
Программист, энтузиаст
Можно вот так делать:
content = pathlib.Path('file').read_bytes()
В таком случае всё правильно закроется.
Вообще нужно стараться уже современные методы работы с файлами и путями использовать, а не доисторические.

Вы, кстати, самозакрывающуюся читалку и сами сделать можете:
def readfromfile(filename, mode='t'):
    assert mode in {'b', 't'}
    with open(filename, mode=mode) as f:
        return f.read()

Но зачем, когда есть замечательный pathlib в третьем питоне из коробки?

Ну и еще добавлю про незакрытие файлов.
В продакшн коде, который планирует жить долго, конечно нужно всё правильно закрывать, но если это у вас мелкий одноразовый скрипт, который не открывает миллионов файлов, то вполне можно забить на его закрытие. По завершении процесса (интерпретатора) все его дескрипторы будут высвобождены.
Ответ написан
vabka
@vabka
Токсичный шарпист
Нет, сам он так не закроется.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Закроется "автоматически" только при использовании менеджера контекста
with open('file','r') as f:
  text = f.read()

Как только код покинет данный блок with, файл будет закрыт
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы