2016-10-20 48 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