我在S3中具有指定文件夹结构的文件 例如:年/月/日期/file.csv。
我使用下面的代码来获取特定日期的数据。
import boto3
resource = boto3.resource('s3')
root_data = resource.Bucket('my_bucket')
for obj in root_data.objects.filter(Prefix='2018/09/19'):
process(obj)
我想知道是否可以通过在前缀(或任何其他方式)中指定通配符来获取数据?
例如:获取一个月中特定日期的文件列表
像Prefix='2018/*/19'
。我在上面的代码中尝试使用'*',但未获取任何文件名。
注意:我无法更改S3的文件夹结构
答案 0 :(得分:0)
您有两种选择, 首先:
prefix和delimiter参数限制列表操作返回的结果类型。前缀将结果限制为仅以指定前缀开头的那些键,而定界符会导致列表将共享公共前缀的所有键汇总到单个摘要列表结果中。
有关更多信息,请阅读以下页面: https://docs.aws.amazon.com/AmazonS3/latest/dev/ListingKeysHierarchy.html
第二: 获取所有对象并在Python上检查它们
import boto3
s3 = boto3.resource('s3')
bucket = s3.Bucket('bucket')
for obj in bucket.objects.all():
if '.pdf' in obj.key:
print(obj.key)