2015-08-21 7 views
0

Мне известно, что когда вы открываете файл в Python, вы всегда должны его закрывать. Однако мне было интересно, что произойдет, если вы не назначаете свой файл переменной и открываете ее только в функции печати.Python: открытие файла в функции print()

Пример: print(open('file.txt','r').read())

Есть ли способ, чтобы закрыть файл, открытый в функции?

нечто большее, чем вещий

F=open('file.txt','r') 
print(F.read()) 
F.close() 
+2

Попытка сделать кучу вещей в одной строке не является питонической. Не пытайтесь открыть файл внутри вызова 'print'. – BrenBarn

+2

Почему? Это вовсе не «Pythonic», это просто плохая идея и ее трудно читать. –

+0

В Python3.5 вы можете: print (pathlib.Path ('file.txt'). Read_text()) – Veky

ответ

2

Используйте with конструкцию.

with open('file.txt', 'r') as f: 
    print(f.read()) 

Если файл очень большой, я предлагаю итерации над ним и печатью строки в то время:

with open('file.txt', 'r') as f: 
    for line in f: 
     print(line, end='') 

Конечно, если файл является то, что большим, вероятно, это не полезно распечатайте его на обычную консоль, но эта практика очень полезна для обработки больших файлов.

+0

Подождите, так это будет автоматически закрывать его? –

+0

Да, это так. Как только блок 'with' заканчивается, файл закрывается, независимо от каких-либо ошибок, которые могли произойти. – TigerhawkT3

1

Так открытие файла, как это не очень хорошая идея.

Просто используйте менеджер контекста:

with open('file.txt','r') as f: 
    print(f.read()) 
+0

Это намного лучше, спасибо –

Смежные вопросы