boto3 - список файлов из подпапки, в которой содержится имя - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь перечислить все файлы в подпапке на 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) для префикса, но мне не повезло.

1 Ответ

0 голосов
/ 30 октября 2019

Я думаю, что вы можете достичь этого, просто добавив 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...