VPython:文件读取错误

时间:2016-09-26 02:27:21

标签: python

我正在使用VIDLE和VPython。我试图做的就是读取" weather.txt中的值。"我需要读取的值从文件的第二行开始,所以我需要跳过第一行。这是我的代码片段:

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()

而且,我一直收到以下错误:

  

回溯(最近一次呼叫最后):文件"无标题",第45行       datafile = open(filename,' r')IOError:[Errno 22]无效模式(' r')或文件名:   ' \ XE2 \ X80 \的Xaa \ XE2 \ X80 \的Xaa \ XE2 \ X80 \ xaaC:\用户\阿什利\文件\ weather.txt的'

关于我究竟做错了什么的任何想法?感谢。

2 个答案:

答案 0 :(得分:1)

看起来你需要在文件路径中转义反斜杠。在字符串的开头也会出现隐形的unicode字符。

尝试使用: filename = 'C:\\Users\\Ashley\\Documents\\weather.txt'

此外,不需要第一个try: except:块,只能通过设置变量来提出这些异常。

答案 1 :(得分:0)

密钥位于您在错误消息中看到的垃圾邮件中,该垃圾邮件位于您的文件名前面:

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

您可以在Python提示符下调查这意味着什么:

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

谷歌告诉我,Unicode代码点U + 202A原来是"left-to-right embedding" character,它可能是那些零宽度字符之一,它可能以某种方式被复制粘贴到你的源文件中。我建议删除带有文件名的行并重新输入。