使用python从文件夹内的s3 bucket下载最新文件,而不是从文件夹内下载



我只想从文件夹中的s3 bucket下载最新的文件。实际上,在文件夹中有多个文件夹和文件。但我只需要下载最新日期的文件,并通过从多个文件夹中选择上传到一个文件夹。我指的是stackoverflow源代码中的代码。

以下是s3 bucket的结构:

S3-Bucket : --folder_1
--abc2022.01.29.csv
--bsv2022.02.18.csv
--test2022.03.04.csv
--Folder_12
--Folder_13
--folder_14

所以基本上,我想从文件夹(folder_1(中的s3 bucket下载最新文件,而不是从文件夹(folder_12、folder_13、folder_14(中下载。

我得到以下错误:

TypeError: 'NoneType' object is not subscriptable

以下是用于下载最新文件的代码片段:

def get_most_recent_s3_object(bucket_name, prefix)
s3 = session.client('s3')
paginator = s3.get_paginator( "list_objects_v2" )
page_iterator = paginator.paginate(Bucket=bucket_name, Prefix=prefix, Delimiter="/")
latest = None
for page in page_iterator:
if "Contents" in page:
latest2 = max(page['Contents'], key=lambda x: x['LastModified'])
if latest is None or latest2['LastModified'] > latest['LastModified']:
latest = latest2
with open(latest, 'wb') as f:
s3.download_fileobj(bucket_name, latest, 'C:\Usersxxxx\)
return latest

latest = get_most_recent_s3_object(bucket_name='bucket_name_1', prefix='folder_1')
print(latest['Key'])

但我无法将下载到我的本地路径中。代码是从文件夹中的文件夹获取最新文件,而不是从文件夹(folder_1(中的s3存储桶中获取。

我修改了下面的代码,下载了文件夹中s3 bucket中的最新文件,它运行良好。请找到下面的工作代码片段。

def get_most_recent_s3_object(bucket_name, prefix)
s3 = session.client('s3')
paginator = s3.get_paginator( "list_objects_v2" )
page_iterator = paginator.paginate(Bucket=bucket_name, Prefix=prefix, Delimiter="/")
latest = None
for page in page_iterator:
if "Contents" in page:
latest2 = max(page['Contents'], key=lambda x: x['LastModified'])
if latest is None or latest2['LastModified'] > latest['LastModified']:
latest = latest2.get('Key')
with open(C:\Usersxxxx\dummy.csv', 'wb') as f:
s3.download_fileobj(bucket_name, latest, f)
print('Latest file downloaded successfully....!!!')


latest = get_most_recent_s3_object(bucket_name='bucket_name_1', prefix='folder_1/')

最新更新