在zip存档python中创建文件

时间:2014-12-04 14:37:03

标签: python zipfile

我有一个外部文件系统和从那里下载数据的方法。我想将所有数据下载到.zip存档中。
我能做的是:

  • 创建file以写入
  • 从设备下载data到此file
  • 撰写file
  • 使用zipfile.write(file)
  • 将文件添加到zip存档

我想做的是:

  • 创建zip 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);

2 个答案:

答案 0 :(得分:2)

如果您的目标只是不创建临时文件,StringIO  是您的救星,以及来自Ignacio的答案的ZipFile.writestr()

答案 1 :(得分:1)

ZipFile.writestr()将允许您将内存缓冲区的内容写入由filename或ZipInfo实例给出的zip条目。但由于zip文件的性质,没有办法以流方式进行。