我是python的新手。
我想知道我是否写:
open('/tmp/xxx.txt', 'w+').write('aabb')
文件仍会打开或关闭吗?
换句话说,上面和上面的有什么区别
with open('/tmp/xxx.txt', 'w+') as f:
f.write('aabb')
最佳答案
该文件可能保持打开状态。
请记住, 将在垃圾收集或软件终止时自动关闭 ,但指望它是一种不好的做法,因为异常、帧甚至延迟 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')
关于python - 在 "open(file_name, ' w +').write(somestr)"之后将关闭文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39732042/