仅从多个文件夹的 s3 存储桶中读取特定的 json 文件

pyl*_*ner 6 python amazon-s3 amazon-web-services

我正在尝试滚动 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)
Run Code Online (Sandbox Code Playgroud)

使用它会得到带有前缀的那些,当存储桶没有该前缀时会失败。

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

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

Adi*_*bak 2

KeyError当存储桶不包含前缀时,尝试捕获错误(是不是?)。

例如:

for i in bucket:
    try:
          result = client.list_objects(Bucket=i,Prefix = 'PROCESSED_BY/FILE_JSON', Delimiter='/')
          print(result)
    except KeyError:
          pass
Run Code Online (Sandbox Code Playgroud)

要读取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)
Run Code Online (Sandbox Code Playgroud)