Как передать объект 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-файле.