Seite 1 von 1

Ordner rekursiv nach Datei durchsuchen

Verfasst: Donnerstag 2. April 2020, 11:12
von Furbynat0r
Hallo zusammen,

ich möchte ein Skript schreiben, welches rekursiv nach einer Datei sucht und mir dann den Pfad + Dateinamen ausgibt. Das Script soll ab da anfangen, wo es abgelegt wurde.

Ich habe es schon grob hinbekommen, allerdings wird mir der Pfad dann ohne Unterordner angegeben.

Code: Alles auswählen

import os

search = 'Marken'

for root, dirs, files in os.walk("."):
    for file in files:
        if re.search('%s' % search , file):
            print(os.path.realpath(file))
Sieht jemand auf anhieb den Fehler?
Vielen Dank :)

Re: Ordner rekursiv nach Datei durchsuchen

Verfasst: Donnerstag 2. April 2020, 11:25
von Sirius3
`os.walk` ist veraltet. Benutze pathlib.Path.rglob.

Code: Alles auswählen

from pathlib import Path

for path in Path('.').rglob("*Marken*"):
    print(path)
Bemerkung: man darf nicht einfach irgendeinen String als regulären Ausdruck nehmen, nur um nach diesem String zu suchen, denn Reguläre Ausdrücke haben viele Zeichen mit besonderer Bedeutung; benutze re.escape. Hier ist das aber gar nicht nötig, da mein einfach den in-Operator nutzen könnte. Ebenso unnötig ist es einen String mittels '%s' in den selben String zu wandeln.

Re: Ordner rekursiv nach Datei durchsuchen

Verfasst: Donnerstag 2. April 2020, 12:42
von Furbynat0r
Ahh alles klar.

Vielen Dank! :)

Re: Ordner rekursiv nach Datei durchsuchen

Verfasst: Donnerstag 2. April 2020, 13:55
von __blackjack__
Ergänzend: ``%`` um Werte in Zeichenketten zu formatieren würde ich heute auch nicht mehr ohne guten Grund verwenden. Es gibt die `format()`-Methode auf Zeichenketten und ab Python 3.6 f-Zeichenkettenliterale.