Python 获取具有未知名称的S3对象

Python 获取具有未知名称的S3对象,python,amazon-web-services,amazon-s3,boto3,Python,Amazon Web Services,Amazon S3,Boto3,我有一个脚本,它获取一个已定义的对象并读取它。当我知道要读取哪个对象时,该脚本工作正常。但是现在我遇到了这样一种情况,即这个对象名称将频繁更改,因此我需要帮助了解如何调整我的脚本 目前的情况是: import boto3 import pandas as pd s3 = boto3.resource( service_name='s3', region_name='myregion', aws_access_key_id='mykey', aws_secret_

我有一个脚本,它获取一个已定义的对象并读取它。当我知道要读取哪个对象时,该脚本工作正常。但是现在我遇到了这样一种情况,即这个对象名称将频繁更改,因此我需要帮助了解如何调整我的脚本

目前的情况是:

import boto3
import pandas as pd

s3 = boto3.resource(
    service_name='s3',
    region_name='myregion',
    aws_access_key_id='mykey',
    aws_secret_access_key='mysecretkey',
)

obj = s3.Bucket('myBucket').Object('a/b/c/myfile.csv').get()
datatable = pd.read_csv(obj['Body'], index_col=0)
前缀将保持a/b/c/,但“myfile.csv”将每天更改。如何调整代码以读取此文件,而无需指定其名称

谢谢。

您可以使用分页器()

您也可以使用


您可以先列出前缀
a/b/c
,然后找到要读取对象的完整S3键。如前所述,无法回答此问题。写入“a/b/c/”的文件是否是唯一具有该前缀的文件?它是带有该前缀的最新文件吗?它是具有该前缀的最新CSV文件吗?还是别的什么?
s3 = boto3.client(
    service_name='s3',
    region_name='myregion',
    aws_access_key_id='mykey',
    aws_secret_access_key='mysecretkey',
)
page_iterator = s3.get_paginator('list_objects_v2').paginate(
    Bucket='myBucket',
    Prefix='a/b/c/'
)
for page in page_iterator:
    if 'Contents' not in page:
        print("No files found. Next")
        continue
    for f in page['Contents']:
        if f['Key'][-4:] == '.csv':
            obj = s3.get_object(Bucket='myBucket', Key=f['Key'])
            datatable = pd.read_csv(obj['Body'], index_col=0)
s3 = boto3.resource(
    service_name='s3',
    region_name='myregion',
    aws_access_key_id='mykey',
    aws_secret_access_key='mysecretkey',
)

bucket = s3.Bucket('myBucket')
for obj in bucket.objects.filter(Prefix='/a/b/c/'):
    if obj.key[-4:] == '.csv':
        csv_obj = obj.get()
        datatable = pd.read_csv(csv_obj['Body'], index_col=0)