我有下面的代码,从特定S3桶中提取所有文件夹名称以及文件名。如何修改它,使其只能读取以".csv"结尾的文件而不是所有的文件夹名称?
def lambda_handler(event, context):
s3_client = boto3.client("s3")
bucket_name = "dump"
response = s3_client.list_objects_v2(Bucket=bucket_name)
files = response.get("Contents")
for file in files:
print(f"file_name: {file['Key']}")
当前输出:
file_name: 2023/
file_name: 2023/Feb/
file_name: 2023/Feb/file1.csv
file_name: 2023/Jan/
file_name: 2023/Jan/file2.csv
file_name: 2023/Mar/
file_name: 2023/Mar/file3.csv
但是,我只想列出csv文件。所以我希望输出是:
file_name: 2023/Feb/file1.csv
file_name: 2023/Jan/file2.csv
file_name: 2023/Mar/file3.csv
怎么做?我试过以"结束。但这行不通。任何帮助吗?
在这里,我更倾向于使用比客户端方法提供更高抽象级别的资源。您可以使用Bucket
资源的filter
方法,如果您想将搜索限制到特定文件夹
Prefix
。def handler(event, context):
s3 = boto3.resource('s3')
bucket = s3.Bucket('dump')
for obj in bucket.objects.filter(Prefix='2023'):
if obj.key.endswith('.csv'):
pass