相关疑难解决方法(0)

如何进行虚拟文件处理?

因此,对于创建文件,我使用以下内容:

fileHandle = open('fileName', 'w')
Run Code Online (Sandbox Code Playgroud)

然后将内容写入文件,关闭文件.在下一步中,我处理文件.在程序结束时,我最终得到了一个我需要删除的"物理文件".

有没有写一个"虚拟"的文件,它的行为完全像一个"物理"一个(允许其操作方法相同),但在Python中运行结束时不存在的方式吗?

python virtual file

57
推荐指数
3
解决办法
4万
查看次数

我必须做StringIO.close()吗?

一些代码:

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)

python stringio

27
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×2

file ×1

stringio ×1

virtual ×1