我知道,当您使用Python打开文件时,必须始终关闭它。但是,我想知道如果不将文件分配给变量并仅在打印函数中打开它会发生什么。Python:在打印()函数内打开文件
例子:print(open('file.txt','r').read())
有没有一种方法来关闭一个函数中打开的文件?
东西比
F=open('file.txt','r')
print(F.read())
F.close()
我知道,当您使用Python打开文件时,必须始终关闭它。但是,我想知道如果不将文件分配给变量并仅在打印函数中打开它会发生什么。Python:在打印()函数内打开文件
例子:print(open('file.txt','r').read())
有没有一种方法来关闭一个函数中打开的文件?
东西比
F=open('file.txt','r')
print(F.read())
F.close()
使用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='')
当然,如果该文件是大的,它可能不是很有用打印到一个普通的控制台,但这种做法是非常有用的处理大文件。
等等,所以这会自动关闭它吧? –
是的,没错。只要'with'块结束,文件就会关闭,不管可能发生的任何错误。 – TigerhawkT3
因此打开这样的文件更Python是不是一个好主意。
只需使用上下文管理器:
with open('file.txt','r') as f:
print(f.read())
这样好多了,谢谢 –
试图在一行中做一堆东西不是Pythonic。不要试图在'print'调用中打开文件。 – BrenBarn
为什么?这根本不是“Pythonic”,它只是一个坏主意,很难阅读。 –
在Python3.5中,你可以:print(pathlib.Path('file.txt')。read_text()) – Veky