Seite 1 von 1

extansion listen vergleichen

Verfasst: Dienstag 30. Juni 2009, 12:48
von max793
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

Verfasst: Dienstag 30. Juni 2009, 13:08
von Leonidas
Na schau doch mal was ``os.path.splitext()`` denn fuer ein Ergebnis zurueckliefert...

Verfasst: Dienstag 30. Juni 2009, 13:10
von cofi
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.

Verfasst: Dienstag 30. Juni 2009, 13:18
von max793
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.

Verfasst: Dienstag 30. Juni 2009, 13:35
von 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']