54

StringIOバッファの内容をファイルに書き込む最良の方法は何ですか?

私は現在次のようなことをしています:

buf = StringIO()
fd = open('file.xml', 'w')
# populate buf
fd.write(buf.getvalue ())

しかし、その後buf.getvalue()、コンテンツのコピーを作成しますか?

4

2 に答える 2

84

使用shutil.copyfileobj

with open('file.xml', 'w') as fd:
  buf.seek(0)
  shutil.copyfileobj(buf, fd)

またはshutil.copyfileobj(buf, fd, -1)、制限されたサイズのチャンクを使用せずにファイルオブジェクトからコピーします(制御されていないメモリ消費を回避するために使用されます)。

于 2010-07-15T08:36:22.717 に答える