python - boto3 - 列出名称包含的子文件夹中的文件
问题描述
我正在尝试列出s3
名称中带有特定模式的子文件夹中的所有文件。下面将列出子文件夹中的所有文件,但我只想列出名称中具有特定模式的文件。
session = boto3.Session(aws_access_key_id = 'aws_access_key_id',
aws_secret_access_key = 'aws_secret_access_key')
s3 = session.resource('s3')
bucket = s3.Bucket('bucket-name')
prefix = 'subfolder'
pattern = 'pattern-in-file-name'
for bucket_object in bucket.objects.filter(Prefix = prefix):
print('{0}:{1}'.format(bucket.name, bucket_object.key))
该模式可以以多个选项为前缀。例如,这里是 s3 中的文件列表:
bucket-name/subfolder/x_pattern-in-file-name.csv
bucket-name/subfolder/x_not-wanted-file.csv
bucket-name/subfolder/y_pattern-in-file-name.csv
bucket-name/subfolder/y_not-wanted-file.csv
我只想阅读以下内容:
bucket-name/subfolder/x_pattern-in-file-name.csv
bucket-name/subfolder/y_pattern-in-file-name.csv
我认为某种类型的通配符可以bucket-name/subfolder/*_pattern-in-file-name
用作前缀(),但我没有任何运气。
解决方案
我认为你可以通过添加if
条件来实现这一点:
for bucket_object in bucket.objects.filter(Prefix = prefix):
if pattern in bucket_object.key:
print('{0}:{1}'.format(bucket.name, bucket_object.key))
推荐阅读
- javascript - 根据html5中相同形式的另一个字段中的数据设置输入的最大长度的方法?
- css - 使用 WayPoint 滚动时如何显示导航栏
- python - Django - 停止自动填充表单文本区域
- python - python while循环在满足设定条件时不会停止
- c# - C#中的多个条件
- node.js - MongoDB:替换数组中的对象
- python-3.x - 在没有 Pandas 的情况下读取数据库表
- c++ - 如何计算 COLLADA 文件的父子联合变换?
- unreal-engine4 - 如何在 UE4 中正确设置 HUD 小部件
- javascript - 是否有带有材质 UI 的 NavBar 元素