Каков наилучший способ записи содержимого StringIO в файл? - PullRequest
28 голосов
/ 15 июля 2010

Как лучше всего записать содержимое буфера StringIO в файл?

В настоящее время я делаю что-то вроде:

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

Но тогда buf.getvalue () сделает копию содержимого?

1 Ответ

54 голосов
/ 15 июля 2010

Используйте shutil.copyfileobj :

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

или shutil.copyfileobj (buf, fd, -1) для копирования из файлового объекта без использования фрагментов ограниченного размера (используется, чтобы избежать неконтролируемого потребления памяти).

...