ZipFile使用zip中的所有文件夹创建zip

时间:2016-10-20 14:29:50

标签: python-3.x zipfile

Python docs,我选择了以下片段来压缩单个文件(对于烧瓶项目)。

我必须在temploc中创建一个zip文件: /home/workspace/project/temploc/zipfile.zip

这是我要压缩的文件: /home/workspace/project/temploc/file_to_be_zipped.csv

from zipfile import ZipFile
def zip_file(self, output, file_to_zip):
    try:
      with ZipFile(output, 'w') as myzip:
        myzip.write(file_to_zip)
    except:
        return None
    return output

此代码在temploc中创建一个zip文件,但具有zip文件路径的完整目录结构。

  def prepare_zip(self):
      cache_dir = app.config["CACHE_DIR"] #-- /home/workspace/project/temploc
      zip_file_path = os.path.join(cache_dir, "zipfile.zip")
      input_file = '/home/workspace/project/temploc/file_to_be_zipped.csv'
      self.zip_file(zip_file_path, input_file)

但是上面的代码是使用给定的路径目录结构创建一个zip文件:

zipfile.zip    
├──home 
│   ├── workspace
│   │   └── project
│   │       └──temploc 
│   │           └── file_to_be_zipped.csv

BUt我只想要这个结构:

zipfile.zip    
   └── file_to_be_zipped.csv

我没有得到我所缺少的东西。

1 个答案:

答案 0 :(得分:1)

您使用ZipFile.write的{​​{3}}来设置存档中文件的正确名称:

import os.path

...

myzip.write(file_to_zip, os.path.basename(file_to_zip))