Fehler beim Speichern

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
da3m0n

Hi
ich habe ein Problem beim speichern;
bei bestimmten Programmen meldet mir die Python Shell das hier:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Programme\Python\lib\lib-tk\Tkinter.py", line 1292, in __call__
    return apply(self.func, args)
  File "C:\PROGRA~1\Python\Tools\idle\IOBinding.py", line 136, in save_as
    if self.writefile(filename):
  File "C:\PROGRA~1\Python\Tools\idle\IOBinding.py", line 154, in writefile
    f.write(chars)
UnicodeError: ASCII encoding error: ordinal not in range(128)
Das Programm wird dann auch nicht gespeichert, hier einmal ein beispielprogramm bei welchem der Fehler auftritt:

Code: Alles auswählen

#erzeugen der Listen hilfsvariablen
end = 1 
Liedersammlung = []
Playlist = []

def sortieren(Liedersammlung):
    print "sortieren"

def auswahl(Liedersammlung, Playlist):
    print "auswahl"

def abspielen(Playlist):
    print "abspielen"


#Speichern der Lieder
for i in range(0,200,1):
    Liedersammlung.insert(i,["Lied %s" %(i+1), 0, 0])#1.Element ist der Liedname
                                                     #2.Element wie häufig es schon gespielt wurde
                                                     #3.Element momentan in PLaylist (1 ja / 0 nein)   
while end = 1:
    sortiere(Liedersammlung)
    auswahl(Liedersammlung, Playlist)
    abspielen(Playlist)
    print 'Wenn sie erneut hören wollen geben sie "1" ein, ansonsten "0".'
    end = input()
Aus der fehlermeldung werde ich nicht schlau, es ist auch schon länger her das ich in python geschrieben habe, habe ich vieleicht was grundlegendes übersehen ?
Wäre echt super wenn ihr mir schnell antworten könntet,
danke schon mal im voraus.

Mfg da3m0n

Edit (Leonidas): Code in Python-Tags gesetzt.
cime
User
Beiträge: 152
Registriert: Dienstag 24. Mai 2005, 15:49

kann es sein, dass du umlaute verwendest??? das würde ich denken ist der fehler ...
Gast

Ich habe mal durch geguckt und keine umlaute gefunden, auser bei einem text den ich aus gebe und bei den Zitaten könnten noch welche sein.
Aber das müste doch eigentlich egal sein oder ?
heftic

hallo!
also ein UnicodeError: sagt eigendlich immer dass du Zeichen verwendet hast die nicht richtig übersetzt werden können weil sie nicht in der encoding-tabelle definiert sind. (siehe auch www.unicode.org)

außerdem ist mir noch aufgefallen das du in dem Beispielcode den Funktionsaufruf "sortiere" anders als die Funktionsdefinition "sortieren" geschrieben hast.


versuchs mal indem du # -*- coding: latin-1 -*- am Anfang des Quellcodes einfügst.
vieleicht gehts dann schon.

mfg
heftic
da3m0n

Tatsache, ich habe jetzt mal alle umlaute aus dem Programm genommen, sogar die die in den Kommentaren standen und jetzt funktioniert es.
Ich dachte er würde alles hinter der # ignorieren ?!?

Danke, jetzt kann ich entlich weiter machen ^^

bis dann
da3m0n
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

da3m0n hat geschrieben:Ich dachte er würde alles hinter der # ignorieren ?!?
Ja, bis auf wenn in der zweiten Zeile das encoding definiert wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Leonidas hat geschrieben:
da3m0n hat geschrieben:Ich dachte er würde alles hinter der # ignorieren ?!?
Ja, bis auf wenn in der zweiten Zeile das encoding definiert wird.
oder in der ersten
TUFKAB – the user formerly known as blackbird
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

blackbird hat geschrieben:oder in der ersten
Ja, aber dort steht in meinem Programmen schon die Shebang, auch wenn ich Programme für Windows schreibe. Schadet nicht und hilft manchmal :)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten