我有以下代码:
import boto3
import datetime
import json
now = datetime.datetime.now()
cw = boto3.client('cloudwatch', region_name='sa-east-1')
s3client = boto3.client('s3')
# Get a list of all buckets
allbuckets = s3client.list_buckets()
# Iterate through each bucket
for bucket in allbuckets['Buckets']:
# For each bucket item, look up the cooresponding metrics from CloudWatch
response = cw.get_metric_statistics(Namespace='AWS/S3',
MetricName='BucketSizeBytes',
Dimensions=[
{'Name': 'BucketName', 'Value': bucket['Name']},
{'Name': 'StorageType', 'Value': 'StandardStorage'},
],
Statistics=['Average'],
Period=3600,
StartTime=(now-datetime.timedelta(days=2)).isoformat(),
EndTime=now.isoformat()
)
for item in response["Datapoints"]:
data = {}
data['data'] = []
data['data'].append ({'#BUCKET_NAME': bucket["Name"]})
json_str = json.dumps(data)
print json_str输出为:
{"data": [{"#BUCKET_NAME": "bucket1"}]}
{"data": [{"#BUCKET_NAME": "bucket2"}]}
{"data": [{"#BUCKET_NAME": "bucket3"}]}
{"data": [{"#BUCKET_NAME": "bucket4"}]}但我需要以下格式的输出:
{"data":[{"{#BUCKET_NAME}":"bucket1"},{"{#BUCKET_NAME}":"bucket2"},
{"{#BUCKET_NAME}":"bucket3"},{"{#BUCKET_NAME}":"bucket4"}]}我哪里做错了?
发布于 2017-06-25 13:47:02
您正在创建一个新的字典,并在循环的每次迭代中打印它。如果您想要存储桶的名称,您只需要以下内容:
# Iterate through each bucket
data = []
for bucket in allbuckets['Buckets']:
data.append[{'#BUCKET_NAME': bucket["Name"]}]
data = {'data':data}
json_str = json.dumps(data)
print json_str如果你想使用列表理解:
data = [{'#BUCKET_NAME': bucket["Name"]} for bucket in allbuckets['Buckets']]
data = {'data':data}
json_str = json.dumps(data)
print json_str发布于 2017-06-25 14:07:42
代码是here....after helloV help:
import boto3
import json
import string
s3client = boto3.client('s3')
allbuckets = s3client.list_buckets()
data = [{"{#BUCKET_NAME}":bucket["Name"]} for bucket in allbuckets['Buckets']]
data = {"data":data}
json_pre = json.dumps(data)
json_pos = json_pre.translate(None, string.whitespace)
print json_pos转换为删除空格是JSON格式所必需的。
https://stackoverflow.com/questions/44742966
复制相似问题