Encoding Fehler, wie bekomme ich denn weg?

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
player_ben
User
Beiträge: 7
Registriert: Freitag 23. Juli 2010, 21:45

Hallo zusammen,
wenn ich diesen code mit einer console starte bekomme ich immer die encoding meldung mit der internetadresse. leider verstehe ich nicht 100pro was ich genau änder muss...
hier der code:

Code: Alles auswählen

from scipy import*
import scipy.io as io
from pylab import*

def read_shs_mat(file):
    fd=open(file,"r")
    print "reading",file
    print "header:"
    for i in range(6):
       print fd.readline(),   
    data=io.read_array(fd,separator=";",comment='"')
    return data[:,1:]

mit dem Code möchte ich eine txt einlesen, der diesen aufbau besitzt. Wo und wie muss ich denn nun dieses encoding enfügen.

Code: Alles auswählen

"zeile1"
"zeile2"
"zeile3"
"zeile4"
"zeile5"
"zeile6"
" ";x1;x2;x3;...
y1;z11;z12;z13;...
y2;z21;....
y3;z31;....
.
.
.
für eine Antwort bedanke ich mich...
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

player_ben hat geschrieben:wenn ich diesen code mit einer console starte bekomme ich immer die encoding meldung mit der internetadresse. leider verstehe ich nicht 100pro was ich genau änder muss...
Ich verstehe leider 0 Prozent. Welche "encoding meldung"? Welche "internetadresse"?

Du willst dir aber ganz bestimmt mal PEP 8 anschaun.
player_ben
User
Beiträge: 7
Registriert: Freitag 23. Juli 2010, 21:45

cofi hat geschrieben:
player_ben hat geschrieben:wenn ich diesen code mit einer console starte bekomme ich immer die encoding meldung mit der internetadresse. leider verstehe ich nicht 100pro was ich genau änder muss...
Ich verstehe leider 0 Prozent. Welche "encoding meldung"? Welche "internetadresse"?

Du willst dir aber ganz bestimmt mal PEP 8 anschaun.
Der Fehler ist Non-ASCII charakter in file .... but no encoding declared see http://www.python.org/dev/peps/pep-0263/...

Das sind diese PEP Seiten, leider verstehe ich nich ganz was ich da machen soll..
BlackJack

@player_ben: Du sollst in der Quelltextdatei die Kodierung eben jener Datei als Kommentarzeile angeben. In dem Format was in dem PEP beschrieben ist.
player_ben
User
Beiträge: 7
Registriert: Freitag 23. Juli 2010, 21:45

ok super es hat dann auch mal geklappt.

also man muss in den quell code in den ersten beiden zeilen folgendes schreiben:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: cp1252 -*-

die cp1252 hängt von eurem Editor ab:
was dort rein muss könnt ihr mit dem code erfahren:

Code: Alles auswählen

import locale
locale.getpreferredencoding()
Zuletzt geändert von player_ben am Donnerstag 2. September 2010, 10:51, insgesamt 1-mal geändert.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Nein das ist falsch, welches Encoding man in den Header schreibt ist abhängig davon welches Enconding die Datei _hat_. Das ist eine Editor-Einstellung keine System-Einstellung.
Benutzeravatar
noisefloor
User
Beiträge: 4209
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

dazu noch eine Frage:

Solange die Python-Installation das Encoding kennt spielt es auch (erstmal) kein Rolle, ob dass darunterliegende OS damit klar kommt?

Gruß, noisefloor
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Was meinst du damit?
Das OS sollte eigentlich nicht mit den eigentlichen Daten in Kontakt kommen, in dem Sinne, dass es sie interpretieren koennen muss. Bei Meta-Daten sieht die Sache evtl anders aus.
Benutzeravatar
noisefloor
User
Beiträge: 4209
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Das OS sollte eigentlich nicht mit den eigentlichen Daten in Kontakt kommen, in dem Sinne, dass es sie interpretieren koennen muss.
Genau.

Theoretisches Beispiel: Python 2.6 auf Win95, Python-Datei ist UTF-8 kodiert (was Win95 AFAIK nicht kennt). Das Python-Skript läuft trotzdem korrekt, sofern ich nicht UTF-8 Daten ans Systeme gebe (z.B Ausgabe via print()).

Gruß, noisefloor
Antworten