Simple Frage zu shutil move

Gute Links und Tutorials könnt ihr hier posten.
Antworten
jerome
User
Beiträge: 13
Registriert: Freitag 10. Juli 2009, 23:02
Kontaktdaten:

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
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 ;-)
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Es gibt uebrigens das ``glob``-Modul fuer dein Globbing mit `*`.
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

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)
the more they change the more they stay the same
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 :-)
Antworten