从多个文件夹的 s3 桶中只读取特定的 json 文件

我试图滚动 s3 中的所有存储桶并查看是否有匹配的前缀并进入这些文件夹并读取 json 文件。


我试图获取包含前缀的文件夹,但无法输入它们。


代码:


import boto3

bucket = ['test-eob', 'test-eob-images']

client = boto3.client('s3')

for i in bucket:

    result = client.list_objects(Bucket=i,Prefix = 'PROCESSED_BY/FILE_JSON', Delimiter='/')

    print(result)

使用这个我得到的是有前缀的,当桶没有那个前缀时失败。


的结构,如果只有我的前缀匹配test-eob,test-eob/PROCESSED_BY/FILE_JSON/*.json 我必须读取 json,否则就会从桶中出来。


有人可以帮我从这里出去吗。


30秒到达战场
浏览 95回答 1
1回答

青春有我

KeyError当桶不包含前缀时,尝试捕获错误(是吗?)。例如:for i in bucket:    try:          result = client.list_objects(Bucket=i,Prefix = 'PROCESSED_BY/FILE_JSON', Delimiter='/')          print(result)    except KeyError:          pass要读取json,有几种方法。例如json.loads()来自 json 模块。所以对于桶中的每个对象:content_object = s3.Object(bucket_name, file_name)file_content = content_object.get()['Body'].read().decode('utf-8')json_content = json.loads(file_content)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python