Ich bin relativ neu bei Python. Ich versuche, ein Verzeichnis in ein anderes Verzeichnis zu kopieren, das die Struktur beibehält.
Ich verwende
%Vor%Ich versuche, eine Rückruffunktion zum Ignorieren zu schreiben.
Mein Ziel ist es, eine Liste von Dateien in einer Liste zu erstellen und nur diese Dateien zu kopieren, wobei der Rest ignoriert wird. Wie übergeben wir eine Liste in die Rückruffunktion?
Ich habe eine einfache Rückruffunktion geschrieben, aber ich bekomme einen Fehler, wenn ich versuche, die copyTree-Funktion
auszuführen %Vor% Die Rückgabe der Ignorierfunktion muss eine Liste von zu ignorierenden Verzeichnissen und Dateien sein. Sie geben nichts zurück, was None
zurückgibt, daher erhalten Sie den Fehler TypeError: argument of type 'NoneType' is not iterable
.
Hier ist ein Beispiel, das die Ordnerstruktur und die in 'copy_these' aufgeführten Dateien kopiert:
%Vor% Das shuthil -Modul bietet eine ignore_patterns
Funktion.
Diese Factory-Funktion erstellt eine Funktion, die als calltree für das ignore-Argument von copytree () verwendet werden kann. Dabei werden Dateien und Verzeichnisse ignoriert, die mit einem der bereitgestellten Glob-Style-Muster übereinstimmen.
Die Modulseite zeigt ein paar Beispiele .
Die ignorierende Callback-Funktion sollte eine Liste von Namen relativ zum Verzeichnis 'src' zurückgeben, die nicht kopiert werden sollten.
Ihr beispielhafter Callback gibt nichts zurück (dh keine). Dann versucht copytree, eine Liste zu erwarten, darüber zu iterieren. Da es nicht möglich ist, erhalten Sie diese Ausnahme.
Wenn ignorieren angegeben wird, muss es eine aufrufbare sein, die als Argument das besuchte Verzeichnis erhält ... und eine Liste seines Inhalts ... Die aufrufbare Funktion muss eine Verzeichnissequenz zurückgeben und Dateinamen relativ zum aktuellen Verzeichnis ...; Diese Namen werden dann beim Kopiervorgang ignoriert.
( Dokumente )
Mein Ziel ist es, eine Liste von Dateien in einer Liste aufzunehmen
Probieren Sie eine anonyme Funktion ( lambda
) und ein Listenverständnis aus:
Beachten Sie, dass die Funktion lambda
die Basisnamen der Dateien und Verzeichnisse erhält, nicht ihre vollständigen Pfade; kudos @ jwhitlock's für die Verzeichnisbehandlung.
Tags und Links python file-copying shutil