在Python中将类文件对象添加到Zip文件中

Joe*_*Joe 7 python django zip

Python ZipFile API似乎允许传递文件路径ZipFile.write或字节字符串,ZipFile.writestr但两者之间没有任何内容.我希望能够传递像object这样的文件,在这种情况下是django.core.files.storage.DefaultStorage原则上任何类似文件的对象.目前我认为我将不得不将文件保存到磁盘,或将其读入内存.这些都不是完美的.

Eth*_*man 8

你是对的,这是唯一的两个选择.如果您的DefaultStorage对象很大,您可能希望先将其保存到磁盘; 否则,我会用:

zipped = ZipFile(...)
zipped.writestr('archive_name', default_storage_object.read())
Run Code Online (Sandbox Code Playgroud)

如果default_storage_objectStringIO对象,则可以使用default_storage_object.getvalue().