我有一个外部文件系统和从那里下载数据的方法。我想将所有数据下载到.zip存档中。
我能做的是:
file
以写入data
到此file
file
zipfile.write(file)
我想做的是:
archive
data
从设备下载到此存档中的已创建文件,无需在我的本地驱动器上创建这不是一个获得想法的代码:
def get_all_files(self):
self.savedir()
zipf = zipfile.ZipFile(self.dir_to_save+"/SD_contents.zip", 'w');
for file in self.nsh.get_all_files("/fs/microsd"):
# get_all_files() returns list of full file paths on the SD
print file
data = self.nsh.download_file("/fs/microsd"+file)
zipf.write(data);
答案 0 :(得分:2)
如果您的目标只是不创建临时文件,StringIO
是您的救星,以及来自Ignacio的答案的ZipFile.writestr()
。
答案 1 :(得分:1)
ZipFile.writestr()
将允许您将内存缓冲区的内容写入由filename或ZipInfo
实例给出的zip条目。但由于zip文件的性质,没有办法以流方式进行。