代码之家  ›  专栏  ›  技术社区  ›  gauteh tpg2114

将StringIO的内容写入文件的最佳方式是什么?

  •  26
  • gauteh tpg2114  · 技术社区  · 14 年前

    StringIO

    我现在做的是:

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

    但是后来呢 buf.getvalue() 会复印一份吗?

    1 回复  |  直到 3 年前
        1
  •  77
  •   johnthagen Matthew Scharley    3 年前

    使用 shutil.copyfileobj :

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

    shutil.copyfileobj(buf, fd, -1) 从文件对象复制而不使用有限大小的块(用于避免不受控制的内存消耗)。

        2
  •  2
  •   Demitri    5 年前

    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())
    
    推荐文章