如何将for循环的内容保存到python中的文本文件中

2024-09-29 21:45:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我叫斯科特·莱因哈特。我一直在做一个程序,从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))

当我打印所有这些数据时,一切都像预期的那样工作,但它只打印文本文件中的一行数据。我不明白这是为什么

谢谢你

斯科特·莱因哈特


Tags: 数据程序retimeopenopenerargumentstart
2条回答

看起来您打开的文件的路径是恒定的,因此您在循环中一次又一次地重新打开同一个文件。在循环之外,尝试只打开一次文件

当您应该对a使用append模式时,您正在用w以写模式打开文件,如下所示:

text_file = open("nws_contourcurrenttemp_data.txt","a")

为了解释,当您想要完全覆盖文件时,模式w用于写入。调用此函数时,所有内容都将被删除a用于附加,信息添加到文件末尾,并且当前文件中的任何信息都不会被删除

相关问题 更多 >

    热门问题