2016-10-20 177 views
0

Python docs中,我选择了follwing片段来压缩单个文件(对于烧瓶项目)。ZipFile使用zip中的所有文件夹创建zip文件

我要在这里创造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 

此代码创建一个zip文件中temploc但全压缩文件路径的目录结构。

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 

但我想只有这种结构:

zipfile.zip  
    └── file_to_be_zipped.csv 

我没有得到什么我失踪。

回答

1

您shuld使用ZipFile.writesecond argument存档设置文件的正确名称:

import os.path 

... 

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

它的工作就像一个魅力。已经忘记接受答案。谢谢:) – Laxmikant