我是python的新手。
我想知道我是否写道:
open('/tmp/xxx.txt', 'w+').write('aabb')
文件是否仍然可以打开或关闭?
换句话说,上面和
之间有什么区别with open('/tmp/xxx.txt', 'w+') as f:
f.write('aabb')
答案 0 :(得分:2)
该文件可能保持打开状态。
请记住,将在垃圾回收或软件终止时自动关闭,但是将其视为异常,帧或甚至延迟GC可能会使其保持打开状态是一种不好的做法。
此外,如果程序意外终止且您没有flush()
,则可能会丢失数据。
在python的许多发行版中,GC不同(例如PyParallel),它可能会导致一个大问题。
即使在CPython中,例如在框架引用的情况下它仍然可以保持打开状态。试试这个:
import sys
glob_list = []
def func(*args, **kwargs):
glob_list.append((args, kwargs))
return func
sys.settrace(func)
open('/tmp/xxx.txt', 'w+').write('aabb')