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

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

Code: Alles auswählen

os.listdir(path)
sollte helfen
lunar

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

Sollte man vielleicht noch auf .pyc und .pyd erweitern.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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: Alles auswählen

nm -D -u /usr/lib/python2.5/lib-dynload/cPickle.so
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 (former) Modvoice
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

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

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/
Antworten