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-eob,test-eob/PROCESSED_BY/FILE_JSON/*.json
如果只有我的前缀匹配,我必须读取 json,否则就从桶里出来。
有人可以帮我从这里出去吗。
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)