Seite 1 von 1

splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 15:34
von orschiro
Hallo Leute,

ich möchte alle Dateien eines Ordners einlesen und dann die Dateiendungen per sliptext abtrennen. Hierzu versuche ich Folgendes, um die Liste anschließend per Bottle in ein Template zu füllen:

Code: Alles auswählen

	for filename in os.walk("bilder"):
		images = os.path.splitext(filename)[0]
		
	return template('template', images=images)
Leider funktioniert das bisher nicht, ich erhalte die Meldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "/usr/local/lib/python2.6/dist-packages/bottle.py", line 499, in handle
    return handler(**args)
  File "galerie.py", line 8, in index
    images = os.path.splitext(filename)[0]
  File "/usr/lib/python2.6/posixpath.py", line 95, in splitext
    return genericpath._splitext(p, sep, altsep, extsep)
  File "/usr/lib/python2.6/genericpath.py", line 91, in _splitext
    sepIndex = p.rfind(sep)
AttributeError: 'tuple' object has no attribute 'rfind'
Es wäre toll, wenn mir jemand gedanklich kurz auf den rechten Weg helfen würde. :)

Grüße

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 15:43
von b.esser-wisser
Mach da mal ein 'print' rein, und schau dir an, was 'os.walk' zurückgibt (oder schau in die Documentation).

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:01
von orschiro
Mit einem print bricht er leider trotzdem sofort mit der selben Fehlermeldung ab.

Grüße

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:21
von Hyperion
orschiro hat geschrieben:Mit einem print bricht er leider trotzdem sofort mit der selben Fehlermeldung ab.
Du musst das print auch davor schreiben ;-)

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:26
von orschiro
Das meinte ich ja. ;)

Code: Alles auswählen

robert@thinkpad ~/Webseiten/kunst.ziesche.de $ python test.py
('bilder', [], ['BZ Kunst 94 Landschaft 17.jpg', 'BZ Kunst 54 irgendwas war anders nach King Crimson.jpg', 'BZ Kunst 58 Landschaft 04.jpg', 'BZ Kunst 21 Der Clown 01.jpg', 'BZ Kunst 56 verletztet Hund.jpg', 'Zi 1976 ziellos.jpg', 'Zi lustiger Elefant.jpg', 'BZ Kunst 08 Tr\xc3\xa4umer 07.jpg', 'BZ Kunst 52 irgendwas nach King Crimson.jpg', 'BZ Kunst 51 irgendwas nach King Crimson.jpg', 'BZ Kunst 48 Einzeller beim Turterln.jpg', 'IMG_4382.JPG', 'Zi Beim fruchtigen Gl\xc3\xa4schen.jpg', 'BZ Kunst 65 Ort der Gewalt.jpg', 'BZ Kunst 41 Spiel im Wasser.jpg', 'Zi Neid.jpg', 'IMG_4375.JPG', 'BZ Kunst 84 Der Gitarrist.jpg', 'BZ Kunst 75 Portrait.jpg', 'BZ Kunst 71 zur Frau mit Vogel 3.jpg', 'BZ Kunst 58 Landschaft 09.jpg', 'BZ Kunst 38 verkleidet.jpg', 'Zi Versuchung.jpg'])
Traceback (most recent call last):
  File "test.py", line 5, in <module>
    images = os.path.splitext(filename)[0]
  File "/usr/lib/python2.6/posixpath.py", line 95, in splitext
    return genericpath._splitext(p, sep, altsep, extsep)
  File "/usr/lib/python2.6/genericpath.py", line 91, in _splitext
    sepIndex = p.rfind(sep)
AttributeError: 'tuple' object has no attribute 'rfind'

Code: Alles auswählen

import os
for filename in os.walk("bilder"):
	print filename
	images = os.path.splitext(filename)[0]
	print images

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:32
von Hyperion
Das ist also die Struktur von "filename" (wie man sieht, passt der Name nicht).

Code: Alles auswählen

('bilder', [], ['BZ Kunst 94 Landschaft 17.jpg', 'BZ Kunst 54 irgendwas war anders nach King Crimson.jpg', 'BZ Kunst 58 Landschaft 04.jpg', 'BZ Kunst 21 Der Clown 01.jpg', 'BZ Kunst 56 verletztet Hund.jpg', 'Zi 1976 ziellos.jpg', 'Zi lustiger Elefant.jpg', 'BZ Kunst 08 Tr\xc3\xa4umer 07.jpg', 'BZ Kunst 52 irgendwas nach King Crimson.jpg', 'BZ Kunst 51 irgendwas nach King Crimson.jpg', 'BZ Kunst 48 Einzeller beim Turterln.jpg', 'IMG_4382.JPG', 'Zi Beim fruchtigen Gl\xc3\xa4schen.jpg', 'BZ Kunst 65 Ort der Gewalt.jpg', 'BZ Kunst 41 Spiel im Wasser.jpg', 'Zi Neid.jpg', 'IMG_4375.JPG', 'BZ Kunst 84 Der Gitarrist.jpg', 'BZ Kunst 75 Portrait.jpg', 'BZ Kunst 71 zur Frau mit Vogel 3.jpg', 'BZ Kunst 58 Landschaft 09.jpg', 'BZ Kunst 38 verkleidet.jpg', 'Zi Versuchung.jpg'])
Um was für ein Objekt handelt es sich also? :wink:

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:38
von orschiro
Was genau meinst du mit Objekt?

Grüße

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:42
von Hyperion
orschiro hat geschrieben:Was genau meinst du mit Objekt?
Das an "filename" gebundene und grad von mir zitierte :!:

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:43
von derdon
Hyperion fragt nach dem Typ des Objekts. In Python bedeutet "Typ eines Objekts" das gleiche wie "Klasse eines Objekts":

Code: Alles auswählen

>>> type(42)
<type 'int'>
>>> (42).__class__
<type 'int'>

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:45
von orschiro
Ich hoffe, ich verstehe dich richtig. :oops:

In dem Ordner sind ausschließlich jpg-Bilder, deren Dateiendung ich abtrennen möchte.

War es das, was du wissen wolltest?

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:47
von Hyperion
Und in der Fehlermeldung ist die Klasse ja auch schon vom Interpreter angegeben (letzte Zeile) :!:

Re: splitext - Problem

Verfasst: Sonntag 13. Februar 2011, 16:51
von Hyperion
orschiro hat geschrieben: War es das, was du wissen wolltest?
Nein. Siehe auch meine beiden Postings und das von derdon.

Edit: Um es noch mal zu präszisieren: Ich weiß bereits, um welchen Typen es sich handelt; ich möchte Dich halt gerne darauf stoßen. Du sollst eben selber drauf kommen - dann kapierst Du nämlich auch die Fehlermeldung. Damit wirst Du dann auch das Problem lösen können (was ein Blick in die Doku iirc auch schon tun sollte) und vor allem in Zukunft bei dieser Meldung wissen, was Du prüfen musst.