Datei in verschiedenen Unterordnern suchen

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
martin86_mu
User
Beiträge: 16
Registriert: Montag 10. März 2008, 15:51

Hallo,

ich habe einen Dateiname (noch ohne Endung) als string in einer variablen gespeichert und möchte die Datei (eine XML-File) per DOM parsen. Soweit kein Problem, wenn ich genau weiss wo die Datei liegt. Wie komme ich aber an den Pfad der Datei wenn ich nicht genau weiss wo sie liegt (liegt z.B. in einem von 3 Unterordnern eines Pfades, den ich kenne)?
Bin bei der suche auf tkFileDialog gestossen, das wollte ich aber erst später verwenden, falls ich noch eine grafische Oberfläche hinzufüge. Gibt es vielleicht noch ein anderes Modul?
Bin für jegliche Anregung dankbar,

Gruß Martin
BlackJack

Schreib Dir einfach eine Funktion die in Unterordnern nachschaut, ob die Datei dort liegt!?
OldBoy
User
Beiträge: 41
Registriert: Samstag 12. Januar 2008, 20:39

Musterlösungen gibt's im Python Cookbook

http://aspn.activestate.com/ASPN/Cookbook/Python

Konkret für deine Fragestellung eine Lösung von Simon Brunning:

Code: Alles auswählen

import os, fnmatch

def locate(pattern, root=os.curdir):
    '''Locate all files matching supplied filename pattern in and below
    supplied root directory.'''
    for path, dirs, files in os.walk(os.path.abspath(root)):
        for filename in fnmatch.filter(files, pattern):
            yield os.path.join(path, filename)
Dann kannst du einfach über alle infragekommenden Dateien laufen:

Code: Alles auswählen

for myfile in locate('*.xml','/home/mypath'):
    #  jetzt steht in myfile die komplette Pfadangabe,
    # z.B.  '/home/mypath/spam.xml'
Gruss

OldBoy
martin86_mu
User
Beiträge: 16
Registriert: Montag 10. März 2008, 15:51

wunnnaabaaar! Genau das was ich gesucht habe. Hab auch schon angefangen gehabt, selber ne Funktion zu schreiben aber die wäre mind. 3x so groß geworden. Danke vielmals, gruß
Antworten