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

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

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

попробовал
text = open('file','r').read()
и меня заинтересовало можно ли так делать и закрывается ли файл самостоятельно? или может его всеравно както вручную закрыть надо?
  • Вопрос задан
  • 293 просмотра
Решения вопроса 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 в третьем питоне из коробки?

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

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

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

Похожие вопросы
23 нояб. 2024, в 01:31
1000 руб./за проект
23 нояб. 2024, в 00:16
2000 руб./за проект
22 нояб. 2024, в 23:55
3000 руб./за проект