glob.glob und Verzeichnisnamen welche [] enthalten

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
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Hallo,
wie kann ich glob dazu veranlassen, dass er [BLUB] ignoriert, wenn es im Namen eines Verzeichnisses auftaucht.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Warum nicht einfach explizit ausfiltern:

Code: Alles auswählen

itr = (fn for fn in glob.iglob(....) if "[BLUV]" not in fn)
Stefan
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Steh' grad auf dem Schlauch, vielleicht ist es einfach zu spät.

Beispiel:
Pfad: "C:\t\t 2\2 34 [BLUB]"
Suche: *.jpg

Code: Alles auswählen

from glob import glob
glob(r"C:\t\t 2\2 34 [BLUB]\*.jpg"
Eigentlich will ich verhindern, dass [BLUB] interpretiert wird, gehört ja schließlich zum Pfad.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Ach so, du willst nicht Dateien ignorieren, die ein "[BLUB]" enthalten, sondern du willst, verhindern, dass glob die [] als Zeichengruppe interpretieren? Dann musst du ein \ davor schreiben. Jedenfalls unter Unix/OSX geht das so. Da müsste aber auch das \* in deinem Beispiel als Sternchen und nicht als Verzeichnis, in dem *.jpg-Dateien stehen, interpretiert werden.

Stefan
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Genau das versuch' ich hier seit einer 1/2h unter Windows 7, nur ignoriert er stets meine Bemühungen. :K
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Kauf dir einen Mac, benutze / statt \ (was Windows auch versteht) oder verdopple die \.

Stefan
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Lustig, die Pfadangaben kommen doch von os.path.join bzw. os.walk. os.listdir kommt mit der Angabe zurecht.
Ich benutze Python 2.7.

Die Lösung ist:
Mach' aus "[BLUB]" ein "[[]BLUB]".
Herrlich, wie man mit simplen Dingen Zeit totschlagen kann. :evil:
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
Antworten