pyowm
库允许从https://openweathermap.org获取天气预报。它在我编写的一个下载近期预测的小程序中运行得很好(见下文,除了我的API键,我已经把它去掉了;插入你自己的API键,你想测试代码,它们可以从openweathermap免费获得)。在
#!/usr/bin/env python
import pyowm
import json
owm = pyowm.OWM('XXXXXXXXXXXXX') # You MUST provide a valid API key
forecaster = owm.three_hours_forecast('Santa Fe, US')
forecast = forecaster.get_forecast()
forecastJSON=json.loads(forecast.to_JSON())
def oneForecast():
mrForecast = forecastJSON['weathers'][:1]
return mrForecast[0]['detailed_status']
def printForecast():
print oneForecast()
if __name__ == "__main__":
printForecast()
从命令行可以完美地工作。但是,如果我创建另一个定期调用oneForecast()的程序,它会第一次返回正确的答案,然后再也不会更改它的预测。在
参见示例
^{pr2}$这个程序,当从命令行运行时,应该每10秒打印一次简单的预测。由于它每次都会调用API,因此该天气预报应随天气变化而更新,但不会。如果程序第一次运行时预报是“小雨”,它将无限期地每隔10秒打印一次“小雨”,而不会改变。在
我在第二段代码调用第一段代码的方式上犯了错误吗?是否有一些缓存需要刷新?我在这里可能遗漏了什么?在
您的
oneForecast
调用不执行任何操作来获取新的预测,它只是格式化您先前获取的预测。在这是获取新预测的代码:
这就是顶层模块代码:它只在每次Python解释器会话中运行一次,当您第一次
import
该模块时。在所以,每次调用
^{pr2}$oneForecast
时,您只需要重写代码来执行提取操作,可能如下所示:相关问题 更多 >
编程相关推荐