【发布时间】:2020-07-17 20:38:01
【问题描述】:
我在 Lambda 上设置了这个 API 端点,我的应用程序可以在其中进行通信并获取它需要的数据。 现在遇到的问题是尝试访问基于今天日期前一天的元素。
语言:Python 3.7
服务:AWS Lambda
提供者:WeatherStack
示例:https://weatherstack.com/documentation -> API 功能 -> 天气预报
为了从 API 提供者访问这个元素;我必须基本上设置一个如下所示的 JSON 结构:
"forecast": {
"2020-04-04": {
"date": "2020-04-04",
"date_epoch": 1585958400,
"astro": {
"sunrise": "06:42 AM",
"sunset": "07:31 PM",
"moonrise": "03:26 PM",
"moonset": "04:56 AM",
"moon_phase": "Waxing Gibbous",
"moon_illumination": 79
},
"mintemp": 46,
"maxtemp": 54,
"avgtemp": 50,
"totalsnow": 0,
"sunhour": 7.7,
"uv_index": 2
}
}
现在这里的问题是“2020-04-04”日期;因为我无法通过调用api_endpoint['forecast'][0] 来访问它,因为它会引发错误。但是,我使用 Lens 进行了检查,发现它确实在“预测”中有一个元素,当然是 2020-04-04,我在尝试访问时遇到了问题。
我不知道是否有办法根据昨天的日期动态设置要调用的元素,因为 api 提供者会每天更改预测日期元素。
我尝试了api_endpoint['forecast'][datetime.now()],但遇到了错误。
有没有办法在['forecast] 之后通过变量动态设置[],以便我可以随时根据api_endpoint['forecast'][yesterdaysdate] 调用它?
解决方案:
from datetime import timedelta, datetime
ts = time.gmtime()
todaysdate = (time.strftime("%Y-%m-%d", ts))
yesterday_date = (datetime.datetime.utcnow() - timedelta(1)).strftime('%Y-%m-%d')
data = api_response['forecast'][yesterday_date]
【问题讨论】:
-
所以你想动态获取
api_endpoint['forecast'][todays_date]或api_endpoint['forecast'][yesterday_date]? -
api_endpoint['forecast'][yesterday_date]
-
是的;已经添加了我的答案。
标签: json python-3.x amazon-web-services aws-lambda