我叫斯科特·莱因哈特。我一直在做一个程序,从NWS当前的rss数据源中获取当前的天气状况。该程序每三个字母生成一个可能性,然后循环遍历每个可能性,并将其插入rss url,以查看是否显示有效页面。如果有,它会解析温度、湿度和露点值。我成功地让程序解析了所有有效机场代码的温湿度和露点,但我不知道如何将所有这些数据保存到一个文本文件中
这是我的密码:
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor)
opener.addheaders = [('User-agent','mr_anderson')]
keywords = map(''.join, product(ascii_lowercase, repeat=3))
keywords = ["k"+a+b+c for a,b,c in product(ascii_lowercase, repeat=3)]
start_time = time.time()
print("--- %s seconds ---" % (time.time() - start_time))
try:
a = 1
b = 1
for i in range (1,20):
i=1
i+=1
a+=1
b+=1
keywargs = str(keywords[a]).upper()
argument = 'http://w1.weather.gov/xml/current_obs/'+keywargs+'.rss'
req = Request(argument)
try:
page_open = urlopen(req)
except:
None
else:
c=1
c+=1
sourceCode = opener.open(argument).read()
tempraw = re.findall(r'and\s\d{1,2}\s\w.*?',str(sourceCode))
windraw = re.findall(r'at\s\d{1,2}\.\d{0,1}.*?',str(sourceCode))
pressureraw = re.findall(r'The pressure is\s\d{1,4}\.\d{0,1}\s\w\w.*?',str(sourceCode))
humidraw = re.findall(r'the humidity is\s\d{1,2}\%.*?',str(sourceCode))
temp = tempraw[0]
temprevised = str(temp).strip("[and F]")
print(temprevised)
text_file = open("nws_contourcurrenttemp_data.txt","w")
text_file.write(temprevised)
print(str(temp)+' '+keywargs+str(windraw)+str(pressureraw)+str(humidraw))
except Exception, e:
print(str(e))
print("--- %s seconds ---" % (time.time() - start_time))
当我打印所有这些数据时,一切都像预期的那样工作,但它只打印文本文件中的一行数据。我不明白这是为什么
谢谢你
斯科特·莱因哈特
看起来您打开的文件的路径是恒定的,因此您在循环中一次又一次地重新打开同一个文件。在循环之外,尝试只打开一次文件
当您应该对
a
使用append模式时,您正在用w
以写模式打开文件,如下所示:为了解释,当您想要完全覆盖文件时,模式
w
用于写入。调用此函数时,所有内容都将被删除a
用于附加,信息添加到文件末尾,并且当前文件中的任何信息都不会被删除相关问题 更多 >
编程相关推荐