2014-12-04 102 views
1

我有一个外部文件系统和一种从那里下载数据的方法。我想将所有数据下载到.zip压缩文件中。
什么我可以做的是:在zip压缩文件里创建文件python

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

回答

1

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

2

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