AWS boto3 page_iterator.search不能将datetime.datetime与字符串进行比较 [英] AWS boto3 page_iterator.search can't compare datetime.datetime to str
本文介绍了AWS boto3 page_iterator.search不能将datetime.datetime与字符串进行比较的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
根据http://jmespath.org/?,以下查询有效,过滤如下json响应;
filtered_iterator = page_iterator.search(
"Contents[?LastModified>='datetime.datetime(2016, 12, 27, 8, 5, 37, tzinfo=tzutc())'].Key")
for key_data in filtered_iterator:
print(key_data)
但是,失败的原因是;
RuntimeError: xxxxxxx has failed: can't compare datetime.datetime to str
分页器响应示例;
{
"Contents": [{
"LastModified": "datetime.datetime(2016, 12, 28, 8, 5, 31, tzinfo=tzutc())",
"ETag": "1022dad2540da33c35aba123476a4622",
"StorageClass": "STANDARD",
"Key": "blah1/blah11/abc.json",
"Owner": {
"DisplayName": "App-AWS",
"ID": "bfc77ae78cf43fd1b19f24f99998cb86d6fd8220dbfce0ce6a98776253646656"
},
"Size": 623
}, {
"LastModified": "datetime.datetime(2016, 12, 28, 8, 5, 37, tzinfo=tzutc())",
"ETag": "1022dad2540da33c35abacd376a44444",
"StorageClass": "STANDARD",
"Key": "blah2/blah22/xyz.json",
"Owner": {
"DisplayName": "App-AWS",
"ID": "bfc77ae78cf43fd1b19f24f99998cb86d6fd8220dbfce0ce6a81234e632c5a8c"
},
"Size": 702
}
]
}
推荐答案
Boto3Jmespath实现不支持日期筛选(它将在您的示例中将它们标记为不兼容的类型"unicode"和"datetime")。但是,通过Amazon解析日期的方式,您可以使用Jmespath的to_string()方法对它们进行词法比较。
如下所示:
"Contents[?to_string(LastModified)>='"2015-01-01 01:01:01+00:00"']"
但请记住,这是一个词汇比较,而不是日期比较。不过,大多数情况下都是有效的。
这篇关于AWS boto3 page_iterator.search不能将datetime.datetime与字符串进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文