首页 > 解决方案 > 尝试使用python读取按时间排序的s3内容中的所有文件

问题描述

我正在尝试按文件上传时间对所有文件内容进行排序,我有以下代码:

keys = []

kwargs = {'Bucket': 'my_bucket'}
while True:
    resp = s3.list_objects_v2(**kwargs)
    for obj in resp['Contents']:
        keys.append(obj['Key'])

    try:
        kwargs['ContinuationToken'] = resp['NextContinuationToken']
    except KeyError:
        break

但它只返回我的钥匙......

如果我在做:

keys.append(obj)

它返回给我一个字典,但我无法弄清楚如何在正常运行时获取文件内容......我错过了什么?

标签: pythonpython-3.xamazon-web-servicesamazon-s3boto3

解决方案


您需要使用LastModified按时间排序。就像是:

import boto3

s3_client = boto3.client('s3', region_name='ap-southeast-2')

all_objects = []
kwargs = {'Bucket': 'my-bucket'}

while True:

    # List objects in bucket
    response = s3_client.list_objects_v2(**kwargs)

    # Create an array of (Modified Date, Key) tuples
    for object in response['Contents']:
        all_objects.append((object['LastModified'], object['Key']))

    try:
        # Next page
        kwargs['ContinuationToken'] = response['NextContinuationToken']
    except KeyError:
        break

# Sort by LastModified
sorted_keys = [object[1] for object in sorted(all_objects)]
print (sorted_keys)

推荐阅读