我是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/

10-15 20:54