Hi leute,
ist vllt ne rech n00bige frage aber ich hab ka wie ich das machen soll!
Ich möchte von einem beliebigen Ordner\Verzeichnis alle dateinamen auslesen und diese in einer liste speichern. das problem ist: Wie lese ich dateinamen aus? habt ihr da irgendwie nen anhaltspunkt für mich? ich erwarte ja keine fertige lösung nur bissel hilfe...
Dateinamen in Ordnern auslesen
- DatenMetzgerX
- User
- Beiträge: 398
- Registriert: Freitag 28. April 2006, 06:28
- Wohnort: Zürich Seebach (CH)
mit unterordner oder ohne?
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
os.listdir() - http://docs.python.org/lib/os-file-dir.html#l2h-1612
os.walk() - http://docs.python.org/lib/os-file-dir.html#l2h-1638
Such mal im Forum
os.walk() - http://docs.python.org/lib/os-file-dir.html#l2h-1638
Such mal im Forum
Es gibt da mehrere Ansätze, die dir vielleicht helfen könnten.
Als aller erstes benötigst du für Verzeichnis- und Dateioperationen die in Python mit ausgelieferte os Bibliothek.
Um allgemein mit Verzeichnissen/Dateien zu arbeiten, sollte man bei Python wissen, dass man unter Windows die Backslahes verdoppeln muss da Python das '\' als erstes Elementes von Steuerungszeichen wie '\n' -> Zeilenumbruch, '\t' -> Tabulator, etc. interpretiert (Bsp: 'c;\\MyDirecotry').
Alternativ kann man auch ein "r" vor die Zeichenkette schreiben (Bsp.: r'c:\MyDirectory', wodurch Python die Umwandlung vornimmt).
Mit folgender Modul-Methode, kannst du den Inhalte eines Verzeichnisses rein 'namentlich' auflisten:
Du erhälst eine Liste von Zeichenketten (strings), welche du in einer Iteration mit dem jeweiligen ziel-Verzeichnis verknüpfen (os.path.join(ziel, <listen_element>)), und auf seinen Typ hin prüfen könntest.
Hierfür liefert os.path ein paar nützliche Methoden:
Aber Python wäre nicht Python, wenn es nicht auch weitere Möglichkeiten gäbe, gerade wenn es um die Iteration durch eine hirarisch verschachtelte Verzeichnisbaumstruktur geht:
Der Vorteil am os.walk() ist neben seine kürze noch dazu, dass die Methode durch alle weiteren drunter liegenden Verzeichnisebenen iteriert, und man so alle Folge-Unterverzeichnisse und Dateien "abarbeiten" kann.
Hierfür bedarf es lediglich der Entferung des "break" Statements aus der For-Schleife (und um die Erweiterung mit der eigenen, gewünschten Funktionalität).
Ideal z.B. für "Sammel-, Such-, Zähl-, Löschungs-, etc.-" Funktionalitäten.
Gruß,
>>Masaru<<
Als aller erstes benötigst du für Verzeichnis- und Dateioperationen die in Python mit ausgelieferte os Bibliothek.
Code: Alles auswählen
>>> import os
Alternativ kann man auch ein "r" vor die Zeichenkette schreiben (Bsp.: r'c:\MyDirectory', wodurch Python die Umwandlung vornimmt).
Mit folgender Modul-Methode, kannst du den Inhalte eines Verzeichnisses rein 'namentlich' auflisten:
Code: Alles auswählen
>>> ziel = 'c:\\MyDirectory\\work'
>>> inhalt = os.listdir(ziel)
>>> print inhalt
['leider', 'ohne', 'unterscheidung', 'nach.typ', 'da.es', 'nur.str', 'sind']
Hierfür liefert os.path ein paar nützliche Methoden:
Code: Alles auswählen
>>> verzeichnisse = []
>>> dateien = []
>>> for elem in inhalt:
... elem_path = os.path.join(ziel, elem)
... if os.path.isfile(elem_path):
... dateien.append(elem)
... if os.path.isdir(elem_path):
... verzeichnisse.append(elem_path)
>>> print verzeichnisse
['leider', 'ohne', 'unterscheidung', 'sind']
>>> print dateien
['nach.typ', 'da.es', 'nur.str',]
Code: Alles auswählen
>>> for basisverzeichnis, verzeichnisse, dateien in os.walk(ziel):
... break
>>> print basisverzeichnis
c:\MyDirectory\work
>>> print verzeichnisse
['leider', 'ohne', 'unterscheidung', 'sind']
>>> print dateien
['nach.typ', 'da.es', 'nur.str',]
Hierfür bedarf es lediglich der Entferung des "break" Statements aus der For-Schleife (und um die Erweiterung mit der eigenen, gewünschten Funktionalität).
Ideal z.B. für "Sammel-, Such-, Zähl-, Löschungs-, etc.-" Funktionalitäten.
Gruß,
>>Masaru<<
Zuletzt geändert von Masaru am Dienstag 11. Juli 2006, 09:20, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hi!jens hat geschrieben:os.listdir()
os.walk()
Zu dieser Liste würde ich noch glob() dazu schmeißen.
glob.glob() -- http://docs.python.org/lib/module-glob.html
Code: Alles auswählen
>>> from glob import glob
>>> glob(r"C:\_Ablage\*")
['C:\\_Ablage\\check_spool', 'C:\\_Ablage\\docutils',
'C:\\_Ablage\\home_sw3', 'C:\\_Ablage\\home_sw3.html',
'C:\\_Ablage\\mini_ajax', 'C:\\_Ablage\\roter_faden.txt']
>>>
lg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.