2016-09-26 6 views
1

Ich verwende VIDLE und VPython. Ich versuche nur die Werte von "weather.txt" zu lesen. Die Werte, die ich lesen muss, beginnen in der zweiten Zeile der Datei, also muss ich die erste Zeile überspringen. Hier ist ein Ausschnitt aus meinem Code:VPython: Datei lesen Fehler

try: 
    filename = "‪‪‪C:\Users\Ashley\Documents\weather.txt" 
except (ValueError, IndexError), e: 
    print e 
    sys.exit() 

datafile = open(filename, 'r') 
datafile.readline() 

for line in datafile: 
    data = line.split() 

    try: 
     date = data[2] 
     temperature = float(data[3]) 

     year = float(date[0:4]) 
     month = float(date[4:6]) 
     day = float(date[6:8]) 

     decimalYear = getDecimalYear(year, month, day) 

     meanTimes.append(decimalYear) 
     meanTemperatures.append(temperature) 

    except: 
     print "Tossing line", line 

datafile.close() 

Und ich folgende Fehler halten Empfang:

Traceback (most recent call last): File "Untitled", line 45 datafile = open(filename, 'r') IOError: [Errno 22] invalid mode ('r') or filename: '\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaaC:\Users\Ashley\Documents\weather.txt'

Irgendwelche Ideen, was genau ich falsch mache? Vielen Dank.

Antwort

1

Sieht so aus, als müssten Sie im Dateipfad Backslashes umkehren. Es scheint auch, dass es unsichtbare Unicode-Zeichen am Anfang Ihrer Zeichenfolge gibt. mit

Versuchen: filename = 'C:\\Users\\Ashley\\Documents\\weather.txt'

Auch der erste try: except: Block nicht erforderlich ist, gibt es keine Möglichkeit, dass können diese Ausnahmen einfach angehoben werden, indem eine variable Einstellung.

0

Der Schlüssel ist in den Junk, die Sie in der Fehlermeldung zu sehen, die auf Ihre Dateinamen vorangestellt wurde:

'\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaaC:\Users\Ashley\Documents\weather.txt' 

Sie können untersuchen, was das bedeutet bei einer Python-Prompt:

>>> '\xe2\x80\xaa\xe2\x80\xaa\xe2\x80\xaa'.decode('utf-8') 
u'\u202a\u202a\u202a' 

Google sagt mir, dass der Unicode-Codepunkt U + 202A der "left-to-right embedding" character ist, der wahrscheinlich einer dieser Nullbreitenzeichen ist und wahrscheinlich irgendwie in Ihre Quelldatei kopiert wurde. Ich würde vorschlagen, die Zeile mit dem Dateinamen zu löschen und neu zu tippen.