python - 尝试使用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)
它返回给我一个字典,但我无法弄清楚如何在正常运行时获取文件内容......我错过了什么?
解决方案
您需要使用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)
推荐阅读
- c# - 如何查找和安装同一 WiFi 网络上的打印机?
- c - 如何获取超大数组的最后一个元素?
- compilation - 为什么在新安装中出现编译错误?
- css - 如何修复 CSS 溢出属性上的滚动属性失败
- excel - 如果满足条件,将整行从一个工作簿复制到另一个工作簿
- spring - Spring Cloud Data Flow - 可以在没有 spring boot 的情况下使用吗?
- vba - 如果表格 (MS Word) 中的列中的任何单元格包含特定文本,则显示 MsgBox
- amazon-web-services - 启动 EC2 实例时观察到的奇怪行为
- scala - 带有 Maven 的 Scala 2.12.8 宏
- flutter - Flutter:从 StreamBuilder 构建器回调内部导航到另一个屏幕