Verzeichnisliste erhalten

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.
Antworten
toom
User
Beiträge: 10
Registriert: Freitag 22. Mai 2009, 08:44

Ich arbeite zwar recht gerne, aber doch auch sehr selten mit Python. Ich würde gerne Dateien in verschiedenen Verzeichnissen einlesen. Das Problem ist, dass sich in dem Unterordner ca. 10000 Unterverzeichnisse befinden. Die kann ich natürlich nicht hardcoden :wink:. Die Verzeichnisstruktur sieht ungefähr so aus

./MeinSkript.py
./statistics
./statistics/dictionary1
./statistics/dictionary2
...
./statistics/dictionaryN

Wobei "./" das aktuelle Verzeichnis bezeichnet (Unixnotation). In jedem Unterverzeichnis ( zB dictionary953) befindet sich eine Textdatei. Ich möchte nun jede Textdatei in den Unterverzeichnissen nacheinander öffnen, deren Inhalt einlesen und dann wieder schließen. Hier mal ein bisschen Pseudocode

1. Öffne Verzeichnis "statistics"
2. List dictionaries = gebeMirEineListeMitAllenVerzeichnienImAktuellenVerzeichnis()
3. for dict in dictionaries: Öffne Textdatei "statistics/dict/textdatei.txt"
4. Textdatei abarbeiten und schließen

Wie kann ich Punkt 1 und 2 mit Python realisieren?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Schau dir mal das glob-Modul an.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Schau Dir mal die Doku zu os.walk() und dem glob-Modul an.

Dazu ggf. diesen Thread hier:
http://www.python-forum.de/viewtopic.ph ... r+rekursiv

Damit solltest Du das einfach realisieren können.

Schritt 1 ist dabei absolut überlüssig. Prinzipiell kann man das mit os.listdirs() realisieren.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
toom
User
Beiträge: 10
Registriert: Freitag 22. Mai 2009, 08:44

Besten Dank für die Antworten. Ich habe es mit glob gelöst.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

toom hat geschrieben:Besten Dank für die Antworten. Ich habe es mit glob gelöst.
Damit hast Du aber keinen rekursiven Durchlauf aller Unterverzeichnisse...
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Antworten