在内联“打开并写入文件”是close()隐式吗?

时间:2011-03-19 15:06:35

标签: python file

在Python(> 2.7)中执行代码:

open('tick.001', 'w').write('test')

的结果与:

相同
ftest  = open('tick.001', 'w')
ftest.write('test')
ftest.close()

在哪里可以找到有关此内联函数的'close'的文档?

1 个答案:

答案 0 :(得分:23)

close()对象从内存中释放时,会发生file,作为其删除逻辑的一部分。因为其他虚拟机上的现代Pythons(如Java和.NET)无法控制何时从内存中释放对象,所以如果没有open(),它就不再被认为是close()的好Python。今天的建议是使用with语句,该语句在退出块时显式请求close()

with open('myfile') as f:
    # use the file
# when you get back out to this level of code, the file is closed

如果您不需要文件的名称f,那么您可以从语句中省略as子句:

with open('myfile'):
    # use the file
# when you get back out to this level of code, the file is closed