python> shutil.copytree ()> Dateien nicht überschreiben> stattdessen distutils.dir_util.copy_tree () verwenden

Funktionsprüfung


Raspberry Pi2 + raspbian

Um die Zeilenmonitor-Protokolldatei in Ordnereinheiten zu kopieren, wurde wie folgt vorgegangen.

shutil.copytree(srcpath, dstpath + "/Log/")

Selbst wenn ich letzte Nacht während eines kontinuierlichen Kommunikationstests ein Protokoll erstellt habe, konnte ich nur ein Protokoll der Tagesarbeit erhalten. Es schien, dass das Überschreiben der Datei fehlgeschlagen ist.

Referenz 1. Frage, die @ SO nicht überschrieben werden kann Referenz 2. So verwenden Sie distutils.dir_util.copy_tree () @ SO

Ich habe es wie folgt geändert. Commit @ github ändern

 #!/usr/bin/env python
 
 '''
+v0.2  2015 Dec. 13
+  - fix bug > did not overwrite files 
 v0.1  2015 Dec. 12
   - add USB memory insertion recognition
   - add folder copy feature
 @@ -20,6 +22,8 @@
 import os.path
 import sys
 import time
+import distutils
+from distutils import dir_util
 
 param = sys.argv
 
 @@ -36,7 +40,7 @@
 	if os.path.isdir(srcpath) and os.path.isdir(dstpath):
 		if chk1==False and chk2==False and chk3==True:
 			print "inserted"
-			shutil.copytree(srcpath, dstpath + "/Log/")
+			distutils.dir_util.copy_tree(srcpath, dstpath + "/Log/")
 			print "Copied"
 	time.sleep(0.5)

Recommended Posts

python> shutil.copytree ()> Dateien nicht überschreiben> stattdessen distutils.dir_util.copy_tree () verwenden
Lesen und verwenden Sie Python-Dateien aus Python
Warum sollten Sie urlopen anstelle von urlretrieve verwenden, um Python-Dateien herunterzuladen?