有没有办法在boto3中根据最后修改日期过滤s3对象?我已经构建了一个包含bucket中所有内容的大型文本文件列表。过了一段时间,我想只列出上次循环整个bucket之后添加的对象。
我知道我可以使用Marker
属性从某个对象名称开始,所以我可以给予它我在文本文件中处理的最后一个对象,但这并不能保证在该对象名称之前没有添加新对象。例如,如果文本文件中的最后一个文件是oak.txt,并且添加了一个名为apple.txt的新文件,它不会拾取它。
s3_resource = boto3.resource('s3')
client = boto3.client('s3')
def list_rasters(bucket):
bucket = s3_resource.Bucket(bucket)
for bucket_obj in bucket.objects.filter(Prefix="testing_folder/"):
print bucket_obj.key
print bucket_obj.last_modified
3条答案
按热度按时间2lpgd9681#
下面的代码片段获取特定文件夹下的所有对象,并检查上次修改的文件是否是在您指定的时间之后创建的:
将
YEAR,MONTH, DAY
替换为您的值。vi4fp9gy2#
下面的代码片段将使用s3 Object类get()操作仅返回满足IfModifiedSince日期时间参数的文件。脚本将打印文件,这是原始问题,但也将文件保存在本地。
6qfn3psc3#
这里是一个更优化的解决方案,可以通过
LastModified
字段过滤对象键。您可以修改迭代器搜索字符串以获取必要的字段。