如何用Python识别对象存储中自指定时间以来发生变更的目录
如何用Python识别对象存储中自指定时间以来发生变更的目录
如果你有一个S3对象存储,想要找出某个基础目录下,自指定时间点之后发生过变更的子目录,我们可以实现一个类似get_changed_directories的功能来完成这个需求。
功能使用示例
它的调用逻辑大概是这样的:
from datetime import datetime, timezone bucket_directory = "your_bucket_name/base_directory" since_datetime = datetime(2023, 1, 1, tzinfo=timezone.utc) changed_dirs = get_changed_directories(s3_client, bucket_directory, since_datetime) >>> ["your_bucket_name/base_directory/subdir_1", "your_bucket_name/base_directory/subdir_2", "your_bucket_name/base_directory/subdir_4"]
关于S3客户端选择
这里的s3_client可以是任意兼容的客户端,比如常用的boto3,不过异步的aiboto3或者s3fs通常在性能上会更出色,能更快完成目录遍历和变更检查的操作。
高效遍历目录的实验结论
经过一些实际测试验证,下面这个方法是列出目录详细信息最快的方式:
s3_file.ls(directory, detail=True, refresh=True)
备注:内容来源于stack exchange,提问作者Joost Döbken
相关产品推荐
相关产品推荐

