我经常编写Python代码,只是想将文件读入变量中。我知道有两种推荐的方法:
with open('file') as f:
data = f.read()
# or
fo = open('file')
data = f.read()
fo.close()
我的问题是,这样做有什么缺点?
data = open('file').read()
我经常编写Python代码,只是想将文件读入变量中。我知道有两种推荐的方法:
with open('file') as f:
data = f.read()
# or
fo = open('file')
data = f.read()
fo.close()
我的问题是,这样做有什么缺点?
data = open('file').read()
这种方法的缺点是
data = open('file').read()
取决于你的Python实现方式,打开文件对象的清理可能会立即发生,也可能不会。这意味着文件将保持打开状态,占用文件句柄。对于单个文件,这可能不是问题,但在循环中可能会出现问题。
具体而言,CPython(通常的Python实现方式)使用引用计数对象,因此文件关闭几乎肯定会立即发生。然而,对于其他实现方式(如IronPython或Jython),这并非一定如此。
缺点是,在第一个和第二个块之后,您可以确保文件已关闭。(即使在第一种情况下出现异常。)
简短的形式没有提供这样的保证。