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.
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.
Siehe IFileCopy . IFileOperation kann über ctypes und shell32.dll verfügbar sein, ich bin mir nicht sicher.
Tags und Links python windows python-2.7