Ordnerstruktur auslesen

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
JohannesGolf
User
Beiträge: 34
Registriert: Montag 10. März 2014, 09:27

Hi zusammen,

ich möchte gern folgendes machen:

Mit dem Programm möchte in in der CMD einen Pfand eines Ordners eingeben.
Das Programm soll mir nun die Struktur anzeigen.
Mit Allen Files und Unterordner.
Und wenn dieser Unterordner einen Ordner beinhaltet auch diese Struktur vom Unterordner.

Also ungefähr so:

Testordner
-File1.txt
-File2.txt
-Testordner1
--File1.txt
--Testunterordner1
---File1.txt
---Unterordner1
----File.txt

Ich nutze dafür gerade "os.path.isdir". Er soll solange "nach unten gehen", bis es keine Unterordner mehr gibt.

Könnt ihr mir da helfen?

Vielen Dank

Grüße JohannnesGolf
BlackJack

@JohannesGolf: Das ist ein klassischer Fall für eine rekursive Funktion.
JohannesGolf
User
Beiträge: 34
Registriert: Montag 10. März 2014, 09:27

@BlackJack du meinst eine Funktion die sich selber immer wieder selber aufruft?
BlackJack

@JohannesGolf: Das ist die Bedeutung des Begriffs „rekursive Funktion“. Du hast eine rekursive Datenstruktur. Also bietet sich eine Funktion an, die eine Verzeichnisebene ausgibt, und für jedes Verzeichnis in dieser Ebene sich selbst aufruft, denn die Funktion ist ja dazu da eine Verzeichnisebene und alles darunter auszugeben. Rekursion halt. :-)
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Frage an JohannesGolf: mit welchem Betriebssystem arbeitest du? Unter UNIX/LINUX kannst du dir eine Liste per shell ausgeben lassen

Code: Alles auswählen

[nor@localhost ~]$ find . "*" -type d -print
Ergebnis sieht dann etwa so aus

Code: Alles auswählen

./Musik
./.vim
./Videos
./.gnome2
./.thumbnails
./.thumbnails/normal
./.thumbnails/large
./.kde
./.kde/share
./.kde/share/config
./.kde/share/config/colors
./.kde/share/config/session
./.kde/share/apps
./.kde/share/apps/kdevproblemreporter
./.kde/share/apps/kdevelop
./.kde/share/apps/kdevelop/sessions
Vorteil bei dem Verfahren ist, das du das Kommando find mit etlichen Optionen aufrufen kannst um das Ergebnis zu beeinflussen und man muss nur die Rückgabe auswerten
Benutzeravatar
ngulam
User
Beiträge: 35
Registriert: Freitag 18. Oktober 2013, 11:03

hans hat geschrieben:mit welchem Betriebssystem arbeitest du? Unter UNIX/LINUX
Da wir hier in einem Python-Forum sind gehe ich doch mal davon aus, dass die Aufgabe mit Python gelöst werden soll...
งูหลาม
BlackJack

@hans: Sowohl unter Linux als auch unter Windows gibt es dafür auch ``tree``.

Code: Alles auswählen

$ tree /etc/X11                                                      
/etc/X11
├── app-defaults
│   ├── Editres
│   ├── Editres-color
│   ├── Viewres
│   ├── Viewres-color
│   ├── Xfd
│   ├── XFontSel
│   ├── Xmessage
│   ├── Xmessage-color
│   └── Xvidtune
├── fonts
│   └── misc
│       └── xfonts-base.alias
├── rgb.txt
├── Xreset
├── Xreset.d
│   └── README
├── Xresources
│   └── x11-common
├── Xsession
├── Xsession.d
│   ├── 20x11-common_process-args
│   ├── 30x11-common_xresources
│   ├── 35x11-common_xhost-local
│   ├── 40x11-common_xsessionrc
│   ├── 50x11-common_determine-startup
│   ├── 90x11-common_ssh-agent
│   └── 99x11-common_start
├── Xsession.options
└── Xwrapper.config

6 directories, 24 files
Antworten