2016-05-04 12 views
1

特定のファイルをzipファイルに圧縮するPythonスクリプトがあります。しかし、私は、このzipファイル内に ".DS_Store"というファイルが生成されていることに気付きました。 zipファイルからこれを削除したり、pythonスクリプトの最初の場所に作成しないようにする方法はありますか?私がオンラインで見つけたものから、私はWindowsマシン上でこの隠しファイルが "macosx"ファイルとして表示されると思います。Pythonでファイルを圧縮するときに ".DS_Store"パスを除外する方法

".DS_Store"隠しファイルの有無にかかわらずzipファイルをテストしました(手動で削除しました)。私はそれを削除すると、zipファイルを正しく処理することができ、私はそれを残して、エラーがスローされます。

これは私が私のPythonスクリプトでzipファイルを作成する方法である。この隠しファイルを削除するアプローチする方法を

#Create zip file of all necessary files 
    zipf = zipfile.ZipFile(new_path+zip_file_name, 'w', zipfile.ZIP_DEFLATED) 
    create_zip(new_path,zipf) 
    zipf.close() 

何かアドバイスをいただければ幸いです。

+0

Macでスクリプトを実行していますか? https://en.wikipedia.org/wiki/.DS_Store –

+0

@TimPietzckerはい、ですが、何らかの理由で ".DS_Store"を検出したときにエラーをスローする別のシステムでジップが処理されています – Catherine

+0

どのようなエラーが発生しますかスロー? Windowsは単にファイルを復元する必要があります。 – cdarke

答えて

3

コードでcreate_zip関数を使用していますが、その関数のコードを共有していません。おそらく、ディレクトリの内容をループし、各ファイルをアーカイブに書き込むためにZipFileインスタンスの.writeメソッドを呼び出します。これが当てはまる場合は、その関数にロジックを追加して.DS_Storeというファイルを除外します。

def create_zip(path, zipfile): 
    files = os.listdir(path) 
    for file in files: 
     if file != '.DS_Store': 
      zipfile.write(file) 
+4

または隠されたファイル: 'file.startswith( '。'):' – jonrsharpe

関連する問題