Seite 1 von 1

Simple Frage zu shutil move

Verfasst: Samstag 12. September 2009, 19:47
von jerome
Hallo allerseits,

Konkret:

Verschiebe alles was in Ordner A ist in Ordner B ( wenn möglich ohne das die Dateien die in Ordner B sind gelöscht werden )

Ich weiß ich koennte das zwar auf meinen Unix system mit
os.system("mv /OrdnerA* /zu/OrdnerB/") machen aber ich will lieber ohne os.system arbeiten.

Mit :
shutil.move('/OrdnerA/*', '/OrdnerB/')

geht das nicht ich vermute wegen den " * " was er als Ordner namen mit ansieht. Naja

Danke wenn jemand ne Idee hat

Verfasst: Samstag 12. September 2009, 22:41
von Hyperion
Naja, wie wäre es so:

Code: Alles auswählen

for name in os.listdir(source_path):
    shutil.move(name, dest_dir)
Nebenbei gehört die Frage eher ins allgemeine Forum ;-)

Verfasst: Samstag 12. September 2009, 23:10
von cofi
Es gibt uebrigens das ``glob``-Modul fuer dein Globbing mit `*`.

Verfasst: Sonntag 13. September 2009, 10:11
von Dav1d
Hyperion hat geschrieben:Naja, wie wäre es so:

Code: Alles auswählen

for name in os.listdir(source_path):
    shutil.move(name, dest_dir)
Nebenbei gehört die Frage eher ins allgemeine Forum ;-)
Jo wenn du nur Datein verschieben willst die in einem Ordner sind also

Code: Alles auswählen

OrdnerA <-- funktioniert mit os.listdir 
OrdnerA\Ordner2\ <-- funktioniert nicht mit os.listdir
Für das 2. würde es os.walk geben (glaube ich)

Verfasst: Sonntag 13. September 2009, 21:55
von Hyperion
Dav1d hat geschrieben: Jo wenn du nur Datein verschieben willst die in einem Ordner sind also

Code: Alles auswählen

OrdnerA <-- funktioniert mit os.listdir 
OrdnerA\Ordner2\ <-- funktioniert nicht mit os.listdir
Wieso das denn? os.listdir() liefert doch auch Verzeichnisnamen, nicht nur Dateinamen. Insofern sollte es so gehen. Es reicht doch für shutil.move() alle Namen eines Ordners zu haben. Das Verschieben an sich verläuft doch dann eh rekursiv.

Aber ich werds gleich mal selber antesten...

EDIT: Klappt bei mir wunderbar :-)