2016-05-04 13 views
1

Ich habe ein Python-Skript, das bestimmte Dateien in eine ZIP-Datei komprimiert. Ich habe jedoch festgestellt, dass in dieser Zip-Datei eine Datei ".DS_Store" erzeugt wird. Gibt es eine Möglichkeit, diese aus der Zip-Datei zu entfernen oder zu vermeiden, dass sie an erster Stelle in meinem Python-Skript erstellt wird. Von dem, was ich online gefunden habe, denke ich an eine Windows-Maschine diese versteckte Datei erscheint als "Macosx" -Datei.Wie ".DS_Store" Pfad auszuschließen, beim Komprimieren von Dateien in Python

Ich habe die Zip-Datei mit und ohne die versteckte Datei ".DS_Store" getestet (ich habe sie manuell gelöscht). Wenn ich es entferne, kann die ZIP-Datei korrekt verarbeitet werden, und wenn ich es verlasse, werden Fehler ausgelöst. Diese

ist, wie ich die Zip-Datei in meinem Python-Skript zu erstellen:

#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() 

Ratschläge, wie man diese versteckte Datei würde geschätzt Ansatz zu entfernen.

+0

Führen Sie das Skript auf einem Mac aus? https://en.wikipedia.org/wiki/.DS_Store –

+0

@TimPietzcker Ja bin ich, aber die Zip wird auf einem separaten System verarbeitet, das Fehler ausgibt, wenn es den ".DS_Store" aus irgendeinem Grund erkennt – Catherine

+0

Was Fehler tut werfen? Windows sollte nur die Datei wiederherstellen. – cdarke

Antwort

3

Ihr Code verwendet eine Funktion create_zip, aber Sie haben den Code dieser Funktion nicht geteilt. Vermutlich durchläuft es den Inhalt eines Verzeichnisses und ruft die .write-Methode der ZipFile-Instanz auf, um jede Datei in das Archiv zu schreiben. Wenn dies der Fall ist, fügen Sie der Funktion nur eine Logik hinzu, um alle Dateien mit der Bezeichnung .DS_Store auszuschließen.

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

Oder irgendeine versteckte Datei: 'wenn nicht file.startswith ('.'):' – jonrsharpe

Verwandte Themen