【问题标题】:Pretty print Boto EC2 output from AWS漂亮的打印来自 AWS 的 Boto EC2 输出
【发布时间】:2017-09-09 17:07:48
【问题描述】:

如何漂亮地打印来自 AWS 的 Boto EC2 输出?

这是原版(不是很漂亮):

{u'Reservations': [{u'OwnerId': '123456789012', u'ReservationId': 'r-0583ea9691fc65d99', u'Groups': [], u'Instances': [{u'Monitoring': {u'State':'禁用'},u'PublicDnsName': 'ec2-52-91-153-194.compute-1.amazonaws.com', u'State': {u'Code': 16, u'Name': 'running'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc()), u'PublicIpAddress':'52.91.153.194',u'PrivateIpAddress':'10.0.0.50', u'ProductCodes': [], u'VpcId': 'vpc-f06bb096', u'StateTransitionReason': '', u'InstanceId': 'i-00b54d7f43d6d6c41', u'ImageId':'ami-f4cc1de2',u'PrivateDnsName': 'ip-10-0-0-50.ec2.internal', u'KeyName': 'ec2-test', u'SecurityGroups': [{u'GroupName': 'default', u'GroupId': 'sg-d91a11a4'}], u'ClientToken': '', u'SubnetId': 'subnet-983e31a4', u'InstanceType': 't2.micro', u'NetworkInterfaces': [{u'Status': '使用中',u'MacAddress':'06:25:23:48:95:a6',u'SourceDestCheck': 真,u'VpcId': 'vpc-f06bb096', u'Description': '', u'Association': {u'PublicIp':'52.91.153.194',u'PublicDnsName': 'ec2-52-91-153-194.compute-1.amazonaws.com', u'IpOwnerId': 'amazon'}, u'NetworkInterfaceId':'eni-7813e976',u'PrivateIpAddresses': [{u'PrivateDnsName':'ip-10-0-0-50.ec2.internal',u'Association': {u'PublicIp':'52.91.153.194',u'PublicDnsName': 'ec2-52-91-153-194.compute-1.amazonaws.com', u'IpOwnerId': 'amazon'}, u'Primary':真,u'PrivateIpAddress':'10.0.0.50'}], u'PrivateDnsName':'ip-10-0-0-50.ec2.internal',u'附件': {u'状态':'附加',u'DeviceIndex':0,u'DeleteOnTermination': 是的,你'AttachmentId':'eni-attach-1497b932',你'AttachTime': datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc())}, u'Groups': [{u'GroupName': 'default', u'GroupId': 'sg-d91a11a4'}], u'SubnetId': 'subnet-983e31a4',u'OwnerId':'123456789012',u'PrivateIpAddress': '10.0.0.50'}],u'SourceDestCheck':真,u'Placement':{u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone': 'us-east-1a'}, u'Hypervisor': 'xen', u'BlockDeviceMappings': [{u'DeviceName': '/dev/sda1', u'Ebs': {u'Status': 'attached', u'DeleteOnTermination': 是的,u'VolumeId':'vol-0bde7c66b5d2bfbe3',u'AttachTime': datetime.datetime(2017, 4, 13, 14, 2, 14, tzinfo=tzutc())}}], u'架构':'x86_64',u'RootDeviceType':'ebs', u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex': 0}]}, {u'OwnerId': '123456789012', u'ReservationId':'r-045b809e272d93e2b',u'Groups':[],u'Instances': [{u'Monitoring': {u'State': 'disabled'}, u'PublicDnsName': '', u'RootDeviceType': 'ebs', u'State': {u'Code': 48, u'Name': '终止'},u'EbsOptimized':假,u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc()), u'ProductCodes': [], u'StateTransitionReason': '用户发起 (2017-04-13 13:57:36 GMT)', u'InstanceId': 'i-0c474bd415597945d', u'ImageId':'ami-f4cc1de2',u'PrivateDnsName':'',u'KeyName': 'ec2-test', u'SecurityGroups': [], u'ClientToken': '', u'InstanceType':'t2.micro',u'NetworkInterfaces':[],u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone': 'us-east-1a'}, u'Hypervisor': 'xen', u'BlockDeviceMappings': [], u'架构':'x86_64',u'StateReason':{u'Message': 'Client.UserInitiatedShutdown:用户启动关机',u'代码': 'Client.UserInitiatedShutdown'}, u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex': 1}, {u'Monitoring': {u'State':'禁用'},u'PublicDnsName':'',u'RootDeviceType': 'ebs', u'State': {u'Code': 48, u'Name': 'terminated'}, u'EbsOptimized': False, u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc()), u'ProductCodes': [], u'StateTransitionReason': '用户发起 (2017-04-13 13:57:36 GMT)', u'InstanceId':'i-08a8961ce06801f38',u'ImageId':'ami-f4cc1de2', u'PrivateDnsName': '', u'KeyName': 'ec2-test', u'SecurityGroups': [], u'ClientToken':'',u'InstanceType':'t2.micro',u'NetworkInterfaces': [], u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone':'us-east-1a'},u'Hypervisor':'xen', u'BlockDeviceMappings':[],u'Architecture':'x86_64',u'StateReason': {u'Message': 'Client.UserInitiatedShutdown: 用户启动关机', u'代码':'Client.UserInitiatedShutdown'},u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex': 2}, {u'Monitoring': {u'State': 'disabled'}, u'PublicDnsName': '', u'RootDeviceType': 'ebs', u'State': {u'Code': 48, u'Name': '终止'},u'EbsOptimized':假,u'LaunchTime': datetime.datetime(2017, 4, 13, 12, 56, 12, tzinfo=tzutc()), u'ProductCodes': [], u'StateTransitionReason': '用户发起 (2017-04-13 13:57:36 GMT)', u'InstanceId': 'i-0912694d25b7c2d4f', u'ImageId':'ami-f4cc1de2',u'PrivateDnsName':'',u'KeyName': 'ec2-test', u'SecurityGroups': [], u'ClientToken': '', u'InstanceType':'t2.micro',u'NetworkInterfaces':[],u'Placement': {u'Tenancy': 'default', u'GroupName': '', u'AvailabilityZone': 'us-east-1a'}, u'Hypervisor': 'xen', u'BlockDeviceMappings': [], u'架构':'x86_64',u'StateReason':{u'Message': 'Client.UserInitiatedShutdown:用户启动关机',u'代码': 'Client.UserInitiatedShutdown'}, u'RootDeviceName': '/dev/sda1', u'VirtualizationType': 'hvm', u'AmiLaunchIndex': 0}]}], 'ResponseMetadata': {'RetryAttempts': 0, 'HTTPStatusCode': 200, 'RequestId':'f698802c-3506-49f5-8bc6-d40639e1e12c','HTTPHeaders': {'传输编码':'分块','变化':'接受编码','服务器': 'AmazonEC2', 'content-type': 'text/xml;charset=UTF-8', 'date': '星期四, 2017 年 4 月 13 日 14:04:51 GMT'}}}

那些us 是什么?

如果我尝试使用 Python 的 JSON 转储,我会得到:

TypeError: datetime.datetime(2017, 4, 13, 14, 2, 13, tzinfo=tzutc()) is not JSON serializable

【问题讨论】:

    标签: python amazon-ec2


    【解决方案1】:

    试试pprint 模块:

    from pprint import pprint
    pprint(your_data)
    

    'u' 前缀表示这是一个 unicode 字符串。

    【讨论】:

    • 简洁的答案。有什么办法摆脱us?非常分散注意力。而且复制粘贴的时候很不方便。
    • 切换到 Python 3.x 将是摆脱 u 的最简单方法,因为在 Python 3 中,所有内容都被视为 unicode,因此不再需要 u 前缀。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-11
    • 2021-03-06
    • 2016-08-26
    • 1970-01-01
    • 2013-11-19
    相关资源
    最近更新 更多