What is the best way to write the contents of a StringIO
buffer to a file ?
I currently do something like:
buf = StringIO()
fd =开发者_JS百科 open('file.xml', 'w')
# populate buf
fd.write(buf.getvalue ())
But then buf.getvalue()
would make a copy of the contents?
Use shutil.copyfileobj
:
with open('file.xml', 'w') as fd:
buf.seek(0)
shutil.copyfileobj(buf, fd)
or shutil.copyfileobj(buf, fd, -1)
to copy from a file object without using chunks of limited size (used to avoid uncontrolled memory consumption).
Python 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())
精彩评论