Hallo, bin neu hier...hab schon das ein oder andere mal mit python was gemacht, zur Zeit komm ich aber nicht weiter!
Und zwar will ich mir ein skript schreiben welches mir gewisse Daten synchronisiert, leider hab ich keine Ahnung wie ichs schaff das Unterordner und deren Unterordner aufgerufen werden!
Hab zwar hinweise mit einer sog. rekursiven Funktion gefunden aber irgendwie komm ich nicht drauf.
vllt kann mir ja jemand helfen, wär echt super.
MfG
Ordner rekursiv durchsuchen
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Oder rsync.
Oder Unison.
Letztendlich wäre es in der Tat wahrscheinlich sinnvoller wenn du ein bereits existierendes Tool verwendest, als etwas neues zu schreiben. Natürlich außer du hast irgendwelche speziellen Anforderungen, die nicht durch die genannten Programme abgedeckt werden.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
ok super...denke das hilft mir weiter...allerdings hab ich ja auch ne weile dran geknobbelt wie denn son algorithmus ausschauen müsste, wär super wenns mir jemand mal erklären könnte...
auch gern einfach mal in pseudocode wie so ne funktion aussehen würde die mir einfach jeden ordner durchsucht, in diesen ordner dann jeden unterordner usw... ha so viel getüfftelt aber es hat nie hingehauen...schlaf schon fast schlecht deswegen...^^
auch gern einfach mal in pseudocode wie so ne funktion aussehen würde die mir einfach jeden ordner durchsucht, in diesen ordner dann jeden unterordner usw... ha so viel getüfftelt aber es hat nie hingehauen...schlaf schon fast schlecht deswegen...^^
Nun der Pseudocode ist:
Dazu brauchst Du mindestens `os.listdir()`, `os.path.join()`, und `os.path.isdir()`. Als Aktion vor dem Abstieg kannst Du den Inhalt des gerade besuchten Verzeichnisses ausgeben.
Code: Alles auswählen
Besuche Verzeichnis (Pfad)
Tue etwas vor dem rekursiven Abstieg. (optional)
Für jedes Verzeichnis in Pfad besuche Unterverzeichnis.
Tue etwas nach dem rekursiven Abstieg. (optional)
Hier habe ich zwei Beispiele für dich, einmal mit ``os.walk()`` (implizit rekursiv, wenn ich mich recht erinnere) und einmal mit ``os.listdir()`` (explizit rekursiv):
- http://homework.nwsnet.de/snippets/view/35
- http://homework.nwsnet.de/snippets/view/36
Ein weiteres Beispiel findet sich im Indexer von File Catalog:
- http://homework.nwsnet.de/snippets/view/35
- http://homework.nwsnet.de/snippets/view/36
Ein weiteres Beispiel findet sich im Indexer von File Catalog:
Code: Alles auswählen
import os
def walk(top):
"""Recursively traverse subdirectories.
A hierarchical data structure with directory and file names is returned.
"""
try:
names = os.listdir(top)
except os.error, err:
return
dirs, nondirs = [], []
for name in names:
path = os.path.join(top, name)
if os.path.isdir(path) and not os.path.islink(path):
dirs.append(walk(path))
else:
nondirs.append(name)
dirs.sort()
nondirs.sort()
return {os.path.basename(top): dirs + nondirs}
# Beispiel:
structure = walk('/some/path')