Kurzes Script zum Auflisten von Ordnerinhalten?

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
_loopmode
User
Beiträge: 2
Registriert: Freitag 24. November 2006, 05:57

hi
Respekt vor euch python-Kennern, ich weiss gar nicht so recht, wie und wo ich mit Python anfangen soll.. Ich Flash-Mensch, und prima fit in ActionScript und allem pipapo, aber die moeglichkeiten sind doch eher arm - eben mal auf das Dateisystem zugreifen ist nicht.

Ich brauche eigentlich einfach ein script, dass mir den Inhalt eines Ordners in eine Textdatei schreibt, sprich Ordner/Datei-Namen. Das geht auch prima mit nem batchfile in Windows mit
dir *.jpg > datei.txt
und mit den ganzen Schaltern ist das schon prima. Nur stoert mich das schwarze dos-artige Fenster der batchfiles doch sehr...

Kann mir jemand da nen Anfang geben? Ich denke das ist ein vernuenftiger Anfang um selber paar Sachen in Python zu lernen.. (google mir schon die Finger wund) aber bin sicher dass das in ein paar zeilen geregelt ist, weiss aber absolut nicht was zu tun ist... danke
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

_loopmode hat geschrieben:Ich brauche eigentlich einfach ein script, dass mir den Inhalt eines Ordners in eine Textdatei schreibt
Hi!

Willkommen im Python-Forum!

Hier die Luxus-Version für einen Ordner ohne Unterordner. Lass dich nicht abschrecken. Das ist nur deshalb so viel Code, weil ich ein paar zusätzliche Dinge eingebaut habe. :wink:

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

from glob import glob
import os.path
import locale

# Auslesen
names = glob(r"J:\*")

# Trennen
dirnames = []
filenames = []
for name in names:
    if os.path.isdir(name):
        dirnames.append(name)
    else:
        filenames.append(name)

# Sortieren (nach deutscher Sortierung)
# http://python.org/doc/2.4.2/lib/module-locale.html
# http://www.python-forum.de/topic-5255.html
locale.setlocale(locale.LC_COLLATE, "german")
dirnames.sort(locale.strcoll)
filenames.sort(locale.strcoll)

# Schreiben
f = file("ausgabedatei.txt", "w")
for dirname in dirnames:
    f.write("dir|" + dirname + "\n")
for filename in filenames:
    f.write("file|" + filename + "\n")
f.close()
Ausgabe:

Code: Alles auswählen

dir|J:\Ablage
dir|J:\CanoScan
dir|J:\cygwin
dir|J:\Dokumente und Einstellungen
dir|J:\MinGW
dir|J:\Office10
dir|J:\program files
dir|J:\Programme
dir|J:\Python24
dir|J:\RECYCLER
dir|J:\Sicherungen
dir|J:\System Volume Information
dir|J:\WINDOWS
dir|J:\Zope-Instance
file|J:\boot.ini
file|J:\bootfont.bin
file|J:\IO.SYS
file|J:\MSDOS.SYS
file|J:\NTDETECT.COM
file|J:\ntldr
file|J:\pagefile.sys
file|J:\W32enwa.dll
Wenn du auch Unterordner auflisten möchtest, dann bist du mit os.walk() nicht schlecht bedient.

Hier noch ein paar interessante Links zu diesem Thema:
- http://www.python-forum.de/post-40236.html
- http://www.python-forum.de/post-43910.html#43910
- http://www.python-forum.de/topic-7072.h ... light=walk
- http://www.python-forum.de/topic-6157.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Wenn dir glob.glob() irgendwie zu eingeschränkt oder leicht überdimensioniert vorkommt, kannst du auch direkt os.listdir() verwenden. Wenn ich mich an den Quelltext des glob-Moduls erinnere, ist das nur ein Wrapper um os.listdir() und fnmatch.
_loopmode
User
Beiträge: 2
Registriert: Freitag 24. November 2006, 05:57

Vielen Dank!

Werde erstmal damit anfangen und rumprobieren :)
Antworten