Как передать объект Python StringIO () в ZipFile () или он не поддерживается?

Итак, у меня есть StringIO() файловый объект, и я пытаюсь записать его в ZipFile(), но я получаю этот TypeError:

coercing to Unicode: need string or buffer, cStringIO.StringI found

вот пример кода, который я использую:

file_like = StringIO()
archive = zipfile.ZipFile(file_like, 'w', zipfile.ZIP_DEFLATED)

# my_file is a StringIO object returned by a remote file storage server.
archive.write(my_file)

врачи говорят, что StringIO() является файловым классом, и это ZipFile() может принимать файловый объект. Я что-то упускаю? Любая помощь будет очень признательна.

спасибо вперед!

1 ответов


чтобы добавить строку в ZipFile, вам нужно использовать метод writestr и передать строку из StringIO с помощью метода getvalue экземпляра StringIO

например

archive.writestr("name of file in zip", my_file.getvalue())

обратите внимание, вы также должны дать имя строки, чтобы сказать, где он находится в zip-файле.