我正在使用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的'
关于我究竟做错了什么的任何想法?感谢。
答案 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,它可能是那些零宽度字符之一,它可能以某种方式被复制粘贴到你的源文件中。我建议删除带有文件名的行并重新输入。