Verzeichnisinhalt 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.
Crazed
User
Beiträge: 171
Registriert: Sonntag 18. Mai 2008, 11:44

Verzeichnisinhalt auslesen

Beitragvon Crazed » Dienstag 22. Juli 2008, 18:22

Hallo,
Ich würde gerne alle Dateien eines Ordners auslesen und diese z.b in einer Sequenz speichern. Aber ich finde einfach keine Funktion / Modul mit der sowas möglich ist.

Über os und os.path bin ich schon gestolpert aber irgendwie habe ich da nichts gefunden was mir bei meinem Problem behilflich sein könnte. Ich würde mich sehr freuen wenn mir jemand helfen kann!

Noch bessere wäre es eigentlich wenn ich einfach alle python scripte in einem Ordner mit einer __init__.py Datei ausgeben lassen könnte.

Z.b:

Code: Alles auswählen

for module in directory:
    print module


MfG,
CracKPod
peddy
User
Beiträge: 121
Registriert: Montag 30. Juni 2008, 13:51

Beitragvon peddy » Dienstag 22. Juli 2008, 18:30

Code: Alles auswählen

os.listdir(path)

sollte helfen
lunar

Beitragvon lunar » Dienstag 22. Juli 2008, 19:49

Code: Alles auswählen

def find_modules(directory):
    return [os.path.join(directory, f) for f in os.listdir(directory) if f.endswith(os.extsep + 'py')]
BlackJack

Beitragvon BlackJack » Dienstag 22. Juli 2008, 20:42

Sollte man vielleicht noch auf .pyc und .pyd erweitern.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 23. Juli 2008, 00:13

BlackJack hat geschrieben:Sollte man vielleicht noch auf .pyc und .pyd erweitern.

Und ``.so``, Shared Objects. Dabei sollte man noch ``.so``s rausfiltern, die nicht als Python-Modul geladen werden können.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 23. Juli 2008, 10:24

Leonidas hat geschrieben:Und ``.so``, Shared Objects. Dabei sollte man noch ``.so``s rausfiltern, die nicht als Python-Modul geladen werden können.

Wie macht man das (ohne probeweise zu importieren)? Geht das?

Gruß,
Christian
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Mittwoch 23. Juli 2008, 11:59

CM hat geschrieben:Wie macht man das (ohne probeweise zu importieren)? Geht das?

Man könnte in die Symboltabelle gucken, die ganzen ``Py*`` Symbole gehören zur C-API. Ist noch die Frage ob es ein Symbol gibt, das jedes Python-C-Modul enthält.

[code=]nm -D -u /usr/lib/python2.5/lib-dynload/cPickle.so[/code]

Natürlich ist die Methode nicht 100% sicher, aber ich denke nicht, dass jemand seine Symbole zufällig mit ``Py`` prefixt :)
My god, it's full of CARs! | Leonidasvoice vs Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Beitragvon CM » Mittwoch 23. Juli 2008, 12:13

Ok, danke. Ich stimme Dir zu: solche Symbole wird niemand "einfach mal so" nutzen.

Ob ein Symbol gibt, dass jedes Python-C-Modul enthält? Vielleicht PyObject*? Aber das ist nur ein Schuss ins Blaue.

Vielen Dank für die neue Einsicht, die ich bekommen habe,
Christian
Benutzeravatar
birkenfeld
Python-Forum Veteran
Beiträge: 1603
Registriert: Montag 20. März 2006, 15:29
Wohnort: Die aufstrebende Universitätsstadt bei München

Beitragvon birkenfeld » Mittwoch 23. Juli 2008, 14:58

Jede shared library, die als Python-Modul geladen werden kann, hat eine exportierte Funktion ``"init" + modulname``. (Ja, das ist unschön. Ab Python 3 heißt es daher auch "PyInit_" + modulname.)
Dann lieber noch Vim 7 als Windows 7.

http://pythonic.pocoo.org/

Wer ist online?

Mitglieder in diesem Forum: noisefloor