Seite 1 von 1
					
				Kopieren von Dateien
				Verfasst: Sonntag 12. Februar 2017, 12:57
				von setiinch
				hallo,
hab mir ein kleinen Code geschrieben, welcher mit alle .txt Dateien anzeigen lassen  und mir in ein bestimmtes Verzeichnis kopieren soll.
Allerdings kopiert er mir nur die .txt Files welche in meinem Arbeitsverzeichnis liegen und nicht alle die er ab dem Wurzelverzeichnis findet.
Code: Alles auswählen
   ziel = '/home/user/Python/temp'
    for root, dirs, files in os.walk('.'):
        for file in files:
            if file.endswith(".txt"):
                #print(os.path.abspath(".")
                print(os.path.join(root, file))
                print(os.getcwd())
                shutil.copy2(file, ziel)
hätte jem evtl eine Idee ? mfg
 
			 
			
					
				Re: Kopieren von Dateien
				Verfasst: Sonntag 12. Februar 2017, 13:18
				von nezzcarth
				Na ja, der '.' in Zeile 2 steht in dem Kontext nun mal für das aktuelle Arbeitsverzeichnis. Wenn du etwas anderes möchtest, musst du da etwas anderes hinschreiben. Wenn du das root-Verzeichnis mit "Wurzelverzeichnis" meinst und wirklich den gesamten Verzeichnisbaum absuchen möchtest, also z.B. '/'. 
Übrigens: An sich ist dafür kein eigenes Skript notwendig; das lässt sich auch in einer Zeile mit 'find' erledigen.
Code: Alles auswählen
find . -iname "*.txt" -exec cp {} /home/user/Python/temp/ ; 
 
			 
			
					
				Re: Kopieren von Dateien
				Verfasst: Sonntag 12. Februar 2017, 14:20
				von setiinch
				Wenn ich statt dem '.' das Symbol für das Wurzelverzeichnis ' / ' ersetze erhalte ich folgenden Fehler:
IOError: [Errno 2] No such file or directory: 'bla.txt'
meine Vermutung ist das er mit relativen Pfaden beim durchsuchen und kopieren der Verzeichnisstruktur nicht klarkommt. 
Wenn ich für den Kopierbefehl absolute Pfade verwende, kopiert er auch außerhalb des Arbeitsverzeichnis die Dateien ohne Problem.
Jetzt war die Idee relative Pfade in absoulute Pfade mit einem Befehl umzuwandeln .!?. und dann zu kopieren, aber das ging auch nicht ...
			 
			
					
				Re: Kopieren von Dateien
				Verfasst: Sonntag 12. Februar 2017, 15:23
				von BlackJack
				@setiinch: Du musst die Pfade halt entsprechend mit `os.path.join()` zusammensetzen.  Machst Du ja auch schon für den Quellpfad, nur dass Du den einfach nur ausgibst, aber nicht im Programm verwendest.
			 
			
					
				Re: Kopieren von Dateien
				Verfasst: Montag 13. Februar 2017, 20:04
				von setiinch
				ok Problem wie folgt gelöst:
Code: Alles auswählen
os.system('find / -name "*.py" -exec cp {} /home/user/Python/temp \;')
der os.walk ansatz wollte nicht so richtig funktionieren.. danke für die hilfe 

 
			 
			
					
				Re: Kopieren von Dateien
				Verfasst: Montag 13. Februar 2017, 20:24
				von nezzcarth
				setiinch hat geschrieben:
Code: Alles auswählen
os.system('find / -name "*.py" -exec cp {} /home/user/Python/temp \;')
 
 
Oh, diese Verwendung war eigentlich nicht meine Intention, als ich sie vorgeschlagen habe; externe Aufrufe für Dinge, die Python selbst beherrscht, sind eher ungünstig.