2016-10-20 9 views
0

Python docsから、1つのファイル(フラスコプロジェクトの場合)を圧縮するためにフォローのスニペットを選択しました。Zipファイルのすべてのフォルダをzipで作成する

私はここテンプロックでzipファイルを作成する必要があります。 /home/workspace/project/temploc/zipfile.zip

そしてここでは、私のファイルは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 

をしかし、私はこれだけの構造たい:私は「何届かない

zipfile.zip  
    └── file_to_be_zipped.csv 

を私は行方不明です。

答えて

1

あなたは、アーカイブ内のファイルの適切な名前を設定するZipFile.writesecond argumentを使用shuld:

import os.path 

... 

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

それは魅力のように働きました。答えを受け入れるのを忘れていた。 – Laxmikant

関連する問題