Listen teilen nach Dateiformaten

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
Christian85
User
Beiträge: 4
Registriert: Donnerstag 4. Oktober 2007, 15:33

Hi Jungs und Mädels,

mir stellt sich momentan folgendes Problem. Ich lese aus einem Verzeichnis Dateien unterschiedlicher Formate in eine Liste aus. So nun möchte ich das dynamisch anhand der unterschiedlichen Verzeichnisse verschiedene Listen erstellt werden, wo jeweils nur die Datein gleicher Formate abgelegt werden.

Bsp: xl.zip, musik. bat, readme.zip, readme.txt, ...

So und nun soll er automatisch daraus in unserem Fall drei Listen generieren.

und zwar eine Liste mit dem Namen zip und den Dateien: xl.zip und readme.zip
eine Liste mit den Namen bat und der Datei musik.bat usw...

Gibt es da irgendeine Funktion die das bewerkstelligt oder hat jemand einen Denkanstoss für mich wie man sowas am einfachsten realisieren kann?
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Ich geb dir'n Stichwort:

os.walk
(ganz runterscrollen)

Damit müsste es ohne Probleme gehen.
HarryPython
User
Beiträge: 60
Registriert: Freitag 8. Juni 2007, 07:39

Hi


String Methods unter endswith, falls du bestimmte suchst.



Gruß
HarryPython
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Wenn es nur ein Verzeichnis ohne Unterverzeichnisse ist: glob.glob.
MfG
HWK
Christian85
User
Beiträge: 4
Registriert: Donnerstag 4. Oktober 2007, 15:33

Danke schon mal für die Antworten. Meine zweite Überlegung wäre es jetzt falls das andere nicht funktinieren sollte was ich gleich mal ausprobieren werde es über eine Abfrage zu machen

Code: Alles auswählen

for (*.zip) in Liste:
dann soll er Operationen ausführen

wobei er mir da noch nen Synthax Fehler rausgibt.
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Hmpf, mal ein Gedanke von mir: (Vorsicht, Pseudocode oO Gerade ausgedacht, könnte auch gar nicht funktionieren. Is' ja auch nur'n Gedankenanstoss, wie man das realisieren könnte.)

Code: Alles auswählen

import os
from pprint import pprint
extensionlist = {}

for root, subdirs, files in os.walk(r"d:\temp"):
    for fl in files:
        ext = os.path.splitext(fl)[1]
        try:
            extensionlist[ext].append(fl)
        except:
            extensionlist[ext] = []
            extensionlist[ext].append(fl)

pprint(extensionlist)
//Edit:
Ich weiß zwar nicht, was du mit der Wildcard machen möchtest, aber der Ausdruck:

Code: Alles auswählen

for (*.zip) in Liste:
is ja auf jedenfall falsch. Man muss schon einen String benutzen:

Code: Alles auswählen

for "*.zip" in Liste:
Aber so einfach funktioniert das nicht... Gibt schon Möglichkeiten so eine Wildcard zu implementieren, in 2.5 is's mit dem in Statement etwas einfacher:

Code: Alles auswählen

for filename in liste:
    if ".zip" in filename:
Antworten