What is the best way to write the contents of a StringIO
buffer to a file ?
I currently do something like:
buf = StringIO()
fd = 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).