为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

30秒到达战场 2022-12-20 13:44:07
我试图滚动 s3 中的所有存储桶并查看是否有匹配的前缀并进入这些文件夹并读取 json 文件。我试图获取包含前缀的文件夹,但无法输入它们。代码:import boto3bucket = ['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,否则就会从桶中出来。有人可以帮我从这里出去吗。
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

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)


查看完整回答
反对 回复 2022-12-20
  • 1 回答
  • 0 关注
  • 94 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信