gpt4 book ai didi

amazon-s3 - AWS boto3 page_iterator.search 无法将 datetime.datetime 与 str 进行比较

转载 作者:行者123 更新时间:2023-12-05 00:16:37 26 4
gpt4 key购买 nike

try catch s3 上的增量文件(上次处理后创建的文件)。为此,使用 boto3 过滤器迭代器通过查询 LastModified 值而不是返回所有文件列表并在客户端站点上进行过滤。

根据 http://jmespath.org/ ?,下面的查询是有效的,并过滤了下面的 json respose;

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
}
]
}

最佳答案

Boto3 Jmespath 实现不支持日期过滤(在您的示例中,它会将它们标记为不兼容的类型“unicode”和“datetime”)。但是通过亚马逊解析日期的方式,您可以使用 Jmespath 的 to_string() 方法对它们进行词法比较。

像这样的东西:

"Contents[?to_string(LastModified)>='\"2015-01-01 01:01:01+00:00\"']"

但请记住,它是按字典顺序比较而不是日期比较。大部分时间都可以工作。

关于amazon-s3 - AWS boto3 page_iterator.search 无法将 datetime.datetime 与 str 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41584793/

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