Programmabbruch trotz try ?

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
dennbas
User
Beiträge: 25
Registriert: Mittwoch 28. September 2016, 10:20

Hallo,

folgender Code der trotz der try-Anweisung abbricht:

Code: Alles auswählen

try:
	im = Image.open(curPic)
except:
	...
else:
	...
Fehlermeldung: cannot identify image file
Jemand eine Idee ?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@dennbas: woher kommt `Image` und wie sieht der komplette Traceback aus?
Generell solltest Du keine nackten except benutzen, weil das auch viele Programmierfehler und unerwartete Fehler überdeckt. Benutze so konkrete Exceptions wie möglich.
dennbas
User
Beiträge: 25
Registriert: Mittwoch 28. September 2016, 10:20

Hi Sirius3,

Image kommt von Pillow

Code: Alles auswählen

from PIL import Image,ImageTk
except und else Block sind nicht leer, habe nur den Code nicht eingefügt.

curPic ist der Pfad zum Bild.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@dennbas: wie sieht der komplette Traceback aus?
BitteEinBit
User
Beiträge: 5
Registriert: Donnerstag 8. März 2018, 09:46

Nehm den try: except Block usw. mal raus und das Programm abstürzen.
Dann bekommst du bessere Fehlermeldungen. Mit Zeile wo das Problem ist usw.
dennbas
User
Beiträge: 25
Registriert: Mittwoch 28. September 2016, 10:20

Der Fehler kommt in open von Pillow:

File "C:\Python27\lib\site-packages\PIL\Image.py", line 2585, in open % (filename if filename else fp))

Die Datei ist benannt wie viele andere auch. Kann sie so auch normal öffnen in Windows. Sehe als kein Unterschied zu den vielen anderen die gehen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@dennbas: die Zeile, die Du gepostet hast, ist nicht sehr hilfreich für das Verständnis des Problems. Zeige den kompletten Traceback!
dennbas
User
Beiträge: 25
Registriert: Mittwoch 28. September 2016, 10:20

Hier der Traceback aus der Konsole:

Code: Alles auswählen

Traceback (most recent call last):
  File "H:\BildAbgleich_v2.py", line 650, in <module>
    ALLpics = SortPics(ALLpics)
  File "H:\BildAbgleich_v2.py", line 204, in SortPics
    im = Image.open(CheckPic)
  File "C:\Python27\lib\site-packages\PIL\Image.py", line 2585, in open
    % (filename if filename else fp))
IOError: cannot identify image file '786054_001.jpg'
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@dennbas: laut Traceback tritt der Fehler in einer Zeile

Code: Alles auswählen

im = Image.open(CheckPic)
auf, Du hast aber den try-Block um eine Zeile geschrieben, die so aussieht:

Code: Alles auswählen

im = Image.open(curPic)
Du schaust also an der falschen Stelle.
dennbas
User
Beiträge: 25
Registriert: Mittwoch 28. September 2016, 10:20

Hi Sirius,

das war nicht das Problem, hatte nur 2 unterschiedliche Versionen.

Das Problem konnte auch nicht durch meine Infos hier gelöst werden und war wirklich doof von mir.
Hatte hier den Bsp.-Code so angepasst dass der Fehler nicht ersichtlich war.

Hatte eine Exception deklariert die nicht eingetroffen ist. Damit ist das Programm dann abgebrochen.
Nun habe ich den Exception-Typ herausgenommen wodurch das Programm nicht mehr abbricht.


Dennoch vielen Dank für die Hilfe und Bemühungen.

VG,
Dennis
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@dennbas: also hast Du es verschlimmbessert. Generell solltest Du keine nackten except benutzen, weil das auch viele Programmierfehler und unerwartete Fehler überdeckt. Benutze so konkrete Exceptions wie möglich. Hier tritt ein IOError auf, also solltest nur den abfangen.
Antworten