extansion listen vergleichen

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
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

Hallo

möchte gern wissen wie man zwei listen von dateien mit extension vergleichen kann.welche befehle sind hier anzuwenden?

Habe das mit diesem Beispiel versucht hat aber nicht geklappt!!!!

Code: Alles auswählen

>>> import os, os.path
>>> d = "C:\test\test.txt"
>>> a = "C:\test\tst.txt"
>>> f = os.path.splitext(a)
>>> s = os.path.splitext(d)
>>> l1 = [f] 
>>> l2 = [s] 
>>> [ item for item in l1 if item in l2 ] 
[] 
>>> 
und dann komm eben []

wo liegt der fehler? DAnke
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Na schau doch mal was ``os.path.splitext()`` denn fuer ein Ergebnis zurueckliefert...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Ich versteh nicht so ganz was genau du machen willst.

Aber das "Problem" bei deinem Code ist, dass ``splitext`` ein Tupel aus Basisnamen und Erweiterung zurückgibt und du das in die Listen hängst. Da die Ausgangsdaten nicht gleich sind, sind es die Tupel auch nicht, daher die leere Liste.

Erkläre nochmal WAS du machen willst.
max793
User
Beiträge: 58
Registriert: Montag 11. Mai 2009, 10:05

also ich habe einen Ordner mit untershiedlichen Dateien die auch unterschiedliche endungen haben. diese muss ich einlesen.

dann vergelcihe ich diese eingelesenen Daten mit hilfe ihrer Endungen mit einer anderen liste die unteranderem auch diese Endungen haben.

zB.:

1 Liste: erere.txt, sdfsdfs.txt, treffer.ttt,...
2 Liste: hjjh.ttt, dhhjh.bum, jdfhi.zum,...

jetzt müsste ich heraus bekommen das die Datei treffer.ttt die einzige datei ist die zutrifft.
BlackJack

Dazu erstellt man am besten ein `set()` mit den Endungen aus der zweiten Liste.

Code: Alles auswählen

In [257]: list_a = ['erere.txt', 'sdfsdfs.txt', 'treffer.ttt']

In [258]: list_b = ['hjjh.ttt', 'dhhjh.bum', 'jdfhi.zum']

In [259]: import os

In [260]: extensions = set(os.path.splitext(s)[1] for s in list_b)

In [261]: extensions
Out[261]: set(['.ttt', '.zum', '.bum'])

In [262]: [s for s in list_a if os.path.splitext(s)[1] in extensions]
Out[262]: ['treffer.ttt']
Antworten