gpt4 book ai didi

python - pyowm 调用在自己的程序中有效,但在从其他程序调用时无效

转载 作者:行者123 更新时间:2023-12-01 09:07:44 24 4
gpt4 key购买 nike

pyowm 库允许人们从 https://openweathermap.org 获取天气预报。它在我编写的一个小程序中运行良好,用于下载近期预测(见下文,除了我已经删除的 API key ;插入您想要测试代码的您自己的 API key ,它们'可从 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() 的程序,它会第一次返回正确的答案,然后永远不会更改其预测。

参见示例

#!/usr/bin/env python

import time
import msForecast

def run():
while True:
text = msForecast.oneForecast()
print text
time.sleep(10.0)

if __name__ == "__main__":
run_text = run()

该程序从命令行运行时,应每十秒打印一个简单的预测。由于它每次都会调用 API,因此该预测应该随着天气变化而更新,但事实并非如此。如果程序第一次运行时预报是“小雨”,它将无限期地每十秒打印一次“小雨”,并且不会改变。

我在第二段代码调用第一段代码的方式中犯了错误吗?是否有一些缓存需要刷新?我在这里可能缺少什么?

最佳答案

您的 oneForecast 调用不会执行任何操作来获取新的预测,它只是格式化您之前已获取的预测。

这是获取新预测的代码:

forecaster = owm.three_hours_forecast('Santa Fe, US')
forecast = forecaster.get_forecast()

这就是顶级模块代码:当您第一次导入模块时,它只在每个 Python 解释器 session 中运行一次。

因此,您只需要重写代码即可在每次调用 oneForecast 时进行提取,可能如下所示:

forecaster = owm.three_hours_forecast('Santa Fe, US')

def oneForecast():
forecast = forecaster.get_forecast()
forecastJSON=json.loads(forecast.to_JSON())
mrForecast = forecastJSON['weathers'][:1]
return mrForecast[0]['detailed_status']

关于python - pyowm 调用在自己的程序中有效,但在从其他程序调用时无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51911992/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com