Seite 1 von 1

Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 12:07
von JohannesGolf
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

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 12:12
von BlackJack
@JohannesGolf: Das ist ein klassischer Fall für eine rekursive Funktion.

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 12:30
von JohannesGolf
@BlackJack du meinst eine Funktion die sich selber immer wieder selber aufruft?

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 12:46
von 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. :-)

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 16:56
von hans
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

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 17:14
von ngulam
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...

Re: Ordnerstruktur auslesen

Verfasst: Mittwoch 23. März 2016, 17:25
von 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