StringIO
将缓冲区内容写入文件的最佳方法是什么?
我目前正在做类似的事情:
buf = StringIO()
fd = open('file.xml', 'w')
# populate buf
fd.write(buf.getvalue ())
但随后buf.getvalue()
会复制内容吗?
with open('file.xml', 'w') as fd:
buf.seek(0)
shutil.copyfileobj(buf, fd)
或shutil.copyfileobj(buf, fd, -1)
从文件对象复制而不使用有限大小的块(用于避免不受控制的内存消耗)。
蟒蛇 3:
from io import StringIO
...
with open('file.xml', mode='w') as f:
print(buf.getvalue(), file=f)
Python 2.x:
from StringIO import StringIO
...
with open('file.xml', mode='w') as f:
f.write(buf.getvalue())