Kopieren von Dateien

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
setiinch
User
Beiträge: 3
Registriert: Samstag 11. Februar 2017, 14:54

Kopieren von Dateien

Beitragvon setiinch » Sonntag 12. Februar 2017, 12:57

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.

  1.    ziel = '/home/user/Python/temp'
  2.     for root, dirs, files in os.walk('.'):
  3.         for file in files:
  4.             if file.endswith(".txt"):
  5.                 #print(os.path.abspath(".")
  6.                 print(os.path.join(root, file))
  7.                 print(os.getcwd())
  8.                 shutil.copy2(file, ziel)


hätte jem evtl eine Idee ? mfg
Zuletzt geändert von BlackJack am Sonntag 12. Februar 2017, 13:18, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
nezzcarth
User
Beiträge: 344
Registriert: Samstag 16. April 2011, 12:47

Re: Kopieren von Dateien

Beitragvon nezzcarth » Sonntag 12. Februar 2017, 13:18

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/ ;
setiinch
User
Beiträge: 3
Registriert: Samstag 11. Februar 2017, 14:54

Re: Kopieren von Dateien

Beitragvon setiinch » Sonntag 12. Februar 2017, 14:20

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 ...
Benutzeravatar
BlackJack
Moderator
Beiträge: 32226
Registriert: Dienstag 25. Januar 2005, 23:29
Wohnort: Berlin
Kontaktdaten:

Re: Kopieren von Dateien

Beitragvon BlackJack » Sonntag 12. Februar 2017, 15:23

@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.
Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. — Brian W. Kernighan
setiinch
User
Beiträge: 3
Registriert: Samstag 11. Februar 2017, 14:54

Re: Kopieren von Dateien

Beitragvon setiinch » Montag 13. Februar 2017, 20:04

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 ;)
nezzcarth
User
Beiträge: 344
Registriert: Samstag 16. April 2011, 12:47

Re: Kopieren von Dateien

Beitragvon nezzcarth » Montag 13. Februar 2017, 20:24

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.

Zurück zu „Allgemeine Fragen“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder