因此,对于创建文件,我使用以下内容:
fileHandle = open('fileName', 'w')
Run Code Online (Sandbox Code Playgroud)
然后将内容写入文件,关闭文件.在下一步中,我处理文件.在程序结束时,我最终得到了一个我需要删除的"物理文件".
有没有写一个"虚拟"的文件,它的行为完全像一个"物理"一个(允许其操作方法相同),但在Python中运行结束时不存在的方式吗?
一些代码:
import cStringIO
def f():
buffer = cStringIO.StringIO()
buffer.write('something')
return buffer.getvalue()
Run Code Online (Sandbox Code Playgroud)
该文件说:
StringIO.close():释放内存缓冲区.尝试使用已关闭的StringIO对象执行进一步操作将引发ValueError.
我是否必须这样做buffer.close(),否则当缓冲区超出范围并被垃圾收集时会自动发生?
更新:
我做了一个测试:
import StringIO, weakref
def handler(ref):
print 'Buffer died!'
def f():
buffer = StringIO.StringIO()
ref = weakref.ref(buffer, handler)
buffer.write('something')
return buffer.getvalue()
print 'before f()'
f()
print 'after f()'
Run Code Online (Sandbox Code Playgroud)
结果:
vic@wic:~/projects$ python test.py
before f()
Buffer died!
after f()
vic@wic:~/projects$
Run Code Online (Sandbox Code Playgroud)