【发布时间】:2012-10-29 00:12:22
【问题描述】:
脚本只获取一个站的天气信息。我想获取链接中列出的所有值,并将值写入以下脚本中格式的文件。
#! /usr/bin/python
#import module to open urls
from urllib import urlopen
#import module to parse xml
import xml.etree.ElementTree as ET
#settings
airport = 'KORF,KPHF,KRIC,KDCA,KIAD,KADW,KBWI,KACY,KPHL,KMDT,KPIT,KEWR,KJFK,KLGA,KBOS'
#open xml file
xml_link = urlopen('http://weather.aero/dataserver_current/httpparam?dataSource=metars&requestType=retrieve&format=xml&hoursBeforeNow=1&stationString=KORF,KPHF,KRIC,KDCA,KIAD,KADW,KBWI,KACY,KPHL,KMDT,KPIT,KEWR,KJFK,KLGA,KBOS')
#parse data and assign root to element tree module
tree = ET.parse(xml_link)
root = tree.getroot()
#search for data under <data> and <METAR> tags
data = root.findall('data/METAR')
for metar in data:
raw_text = metar.find('raw_text').text
station = metar.find('station_id').text
category = metar.find('flight_category').text
file = open('metar.txt', 'w')
file.write("%s is now reporting %s condition:" % (station, category))
file.write("\n%s" %raw_text)
file.close()
【问题讨论】:
-
您的代码已经确实遍历了所有条目。问题是,它会从头开始为每个文件重写文件。在循环之前打开文件一次,在循环期间写入(就像你已经做的那样),在循环之后关闭它,你会没事的。
-
顺便说一句,我倾向于将其关闭为“过于本地化”——它不会帮助任何想要从 XML 文件中获取多个值的人,因为这不是问题是。
-
仅仅因为他误诊了他的编程问题,并不意味着他的问题过于局部化。许多人误解了打开文件的工作原理,这可能很有价值。
标签: python xml parsing for-loop elementtree