我想在循环外获取变量输出a(在循环中)
stopped_reasons = []
output=[]
client = boto3.client('ec2')
reservations = client.describe_instances().get('Reservations', [])
for reservation in reservations:
for instance in reservation['Instances']:
tags = {}
for tag in instance['Tags']:
tags[tag['Key']] = tag['Value']
if tag['Key'] == 'Name':
name=tag['Value']
if instance['State']['Name'] == 'stopped':
instance_ids.append(instance['InstanceId'])
instance_names.append(name)
stopped_reason = instance['StateTransitionReason']
stopped_reasons.append(stopped_reason)
transition_timestamp = datetime.strptime(instance['StateTransitionReason'][16:39], '%Y-%m-%d %H:%M:%S %Z')
#print (datetime.now() - transition_timestamp).days
a="Instance:"+ instance['InstanceId'] + ' Name: ' +name + "TIME: "+str(transition_timestamp)
print a
output.append(a)
print output
打印一个(内部循环)给出我想要的:
Instance:i-03666a1aea6028cf0 Name: aws-opsworks-cm-instance-mypuppet-1541455366196TIME: 2018-11-15 18:30:27
Instance:i-0a67100fa09eab573 Name: Choco_ServerTIME: 2018-11-29 18:30:27
我正在尝试获得相同的输出,但在for循环之外。所以我声明了列表输出并附加了一个变量
但打印输出(外部循环)仅占一行
['Instance:i-03666a1aea6028cf0 Name: aws-opsworks-cm-instance-mypuppet-1541455366196 TIME: 2018-11-15 18:30:27', 'Instance:i-0a67100fa09eab573 Name: Choco_Server TIME: 2018-11-29 18:30:27']
答案 0 :(得分:1)
刚刚找到它,必须将新行添加到列表中
body= "\n".join(output)
print body
答案 1 :(得分:0)
请注意,您正在使用output.append(a)
-output
是一个列表。在一般的python打印列表中,就像您在此处看到的那样:全部一行,带有方括号,并在字符串两边加上引号。
如果要单独打印每行而不使用引号,则必须单独打印列表的每个元素,而不是一次打印整个列表。代替
print output
做
for line in output:
print line