将文件在“open(file_name,'w +')之后关闭.write(somestr)”

时间:2016-09-27 18:38:40

标签: python

我是python的新手。

我想知道我是否写道:

open('/tmp/xxx.txt', 'w+').write('aabb')

文件是否仍然可以打开或关闭?

换句话说,上面和

之间有什么区别
with open('/tmp/xxx.txt', 'w+') as f:
  f.write('aabb')

1 个答案:

答案 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')