У меня есть настройка API Endpoint на Lambda, где мои приложения общаются и получают необходимые данные. Проблема, с которой я сейчас сталкиваюсь, пытается получить доступ к элементу, основанному на дне, предшествующем сегодняшней дате.
Язык: Python 3.7
Служба: AWS Лямбда
Поставщик: 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]
, поскольку он выдаст ошибку. Однако я проверил с помощью объектива и обнаружил, что у него есть один элемент в «прогнозе» - это, конечно, 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]