11

所以我有一个StringIO()类似文件的对象,我正在尝试将它写入 a 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()可以接受类似文件的对象。有什么我想念的吗?任何帮助将不胜感激。

提前致谢!

4

1 回答 1

13

要将字符串添加到 ZipFile,您需要使用 writestr 方法并使用 StringIO 实例的 getvalue 方法从 StringIO 传递字符串

例如

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

请注意,您还需要给出字符串的名称以说明它在 zip 文件中的位置。

于 2011-06-09T22:03:06.210 回答