Seite 1 von 1

Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 09:27
von Hervorragend
Hallo zusammen,

Ich habe ein Skript welches ein Verzeichnis durchläuft (rekursiv) und mir alle Files mit einer bestimmten Endung ausgibt. Das funktioniert soweit auch ganz gut.
Der Path sieht wie folgt aus fileInPath='\\\\server1231456879\\Provider\\Länderkürzel\\Kategorie\\Archive

Bsp.
Länderkürzel: DE, AT, IT
Kategorie: A,B,C
Unterverzeichnisse von Kategorie: mehrere. Interessant ist allerdings nur das Archive

Nun möchte ich das die Verzeichnisse Länderkürzel und Kategorie rekursiv durchlaufen werden aber immer nur die Inhalte auf Archive betrachtet und im weiteren in einer Liste gespeichert werden.

Ich habe versucht mit * zu arbeiten: fileInPath='\\\\server1231456879\\Provider\\*\\*\\Archive

das funktioniert aber leider nicht. Wie ist die Syntax dafür?

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 09:35
von __deets__
Du zeigst ja nicht wie du vorgehst. Aber solltest du os.walk nutzen, dann hat das ein Feature das dir deinen Wunsch erfüllen kann. Schau mal genau in die Dokumentation zu der Liste von Verzeichnissen, die du bekommst.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 10:00
von Hervorragend

Code: Alles auswählen

fileInPath='\\\\server1231456879\\Provider\\Länderkürzel\\Kategorie\\Archive'

for subdir, dirs, files in os.walk(fileInPath):
  
  for file in files:

    if file[-3:].upper()=='PAR':
        print (file)
etwas vereinfacht gehe ich so vor.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 10:03
von __deets__
Dann fang bei Provider an, und modifizier dirs so das es nur Archives enthält, wenn du auf der Ebene “Kategorie” ankommst.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 10:21
von Sirius3
Einfacher geht das mit

Code: Alles auswählen

for filename in pathlib.Path("\\\\server1231456879\\Provider").glob("*\\*\\Archive\\*.par"):
  ...

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 11:07
von __deets__
Neat. Ich wusste nicht, das glob das kann. Dachte der kann nur auf einer Ebene. 👍🏻

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 13:58
von Hervorragend
Sirius3 hat geschrieben: Freitag 12. Juli 2019, 10:21 Einfacher geht das mit

Code: Alles auswählen

for filename in pathlib.Path("\\\\server1231456879\\Provider").glob("*\\*\\Archive\\*.par"):
  ...
Danke für den Tip ginge das auch ohne die pathlib zu importieren? Verwende import OS.

...man merkt ich bin noch nicht ganz sooo fit darin;)

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:03
von __deets__
Und was hindert dich daran, pathlib zu verwenden?

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:11
von __blackjack__
Klar geht das auch ohne `pathlib` zu importieren – man kann auch mit ``from pathlib import Path`` nur die `Path`-Klasse importieren. 😜

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:12
von kbr
Geht auch mit os. Du musst Dir halt anschauen, was in 'subdir' so steht. Aber mit pathlib und glob ist es deutlich eleganter. Und der Import ist auch nicht schwieriger.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:20
von Hervorragend
für Pathlib erhalte ich immer die Fehlermeldung from pathlib import path , Import Error: No Module named path

habe auch schon die Version supo pip install pathlib ausprobiert.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:20
von Hervorragend
kbr hat geschrieben: Freitag 12. Juli 2019, 14:12 Geht auch mit os. Du musst Dir halt anschauen, was in 'subdir' so steht. Aber mit pathlib und glob ist es deutlich eleganter. Und der Import ist auch nicht schwieriger.
Das weiß ich ja. Lasse ich mir zurzeit noch immer mit ausgeben.

Re: Rekursives durchlaufen eines variablen Verzeichnisses

Verfasst: Freitag 12. Juli 2019, 14:28
von __deets__
Dir ist klar, dass gross und Kleinschreibung wichtig ist beim Programmieren? Und warum nicht einfach "import pathlib"?