Kopieren mit dem Windows-Kopierdialog

8

Ich verwende derzeit shutil.copy2() , um eine große Anzahl von Bilddateien und Ordnern (irgendwo zwischen 0,5 und 5 Gigs) zu kopieren. Shutil funktioniert gut, aber es ist so langsam. Ich frage mich, ob es eine Möglichkeit gibt, diese Informationen an Windows zu übergeben, um die Kopie zu erstellen und mir das Standardübertragungsdialogfeld zu geben. Weißt du, dieser Typ ...

Viele Male dauert mein Skript etwa doppelt so lange wie die Standard-Windows-Kopie, und es macht mich nervös, dass mein Python-Interpreter beim Ausführen der Kopie hängen bleibt. Ich führe den Kopiervorgang mehrmals durch und ich versuche, die Zeit zu verkürzen.

    
tylerART 31.05.2013, 23:54
quelle

3 Antworten

4

Wenn Ihr Ziel ein schicker Kopierdialog ist, SHFileOperation Windows-API-Funktion bietet das. Das Paket pywin32 hat eine Python-Bindung, ctypes ist ebenfalls eine Option (google "SHFileOperation ctypes" für Beispiele).

Hier ist mein (sehr leicht getestetes) Beispiel mit pywin32:

%Vor%

Sie können den gleichen Kopiervorgang auch im "Silent Mode" (kein Dialog, keine Bestätigungen, keine Fehler-Popups) durchführen, wenn Sie die Flags oben auf shellcon.FOF_SILENT | shellcon.FOF_NOCONFIRMATION | shellcon.FOF_NOERRORUI | shellcon.FOF_NOCONFIRMMKDIR. setzen. Siehe SHFILEOPSTRUCT für Details.

    
Nikita Nemkin 01.06.2013 09:18
quelle
1

Siehe IFileCopy . IFileOperation kann über ctypes und shell32.dll verfügbar sein, ich bin mir nicht sicher.

    
kirbyfan64sos 01.06.2013 00:37
quelle
1

Update: Siehe

Wäre schön, wenn es in eine Bibliothek eingepackt wäre ... Mit Hilfe der obigen Antworten konnte ich es auf Windows 7 wie folgt arbeiten lassen.

%Vor%

Die Referenzen hier waren auch sehr hilfreich: Ссылка

    
frmdstryr 14.11.2013 22:27
quelle

Tags und Links