Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使json数据以表格格式显示在每台机器上?_Python - Fatal编程技术网

Python 如何使json数据以表格格式显示在每台机器上?

Python 如何使json数据以表格格式显示在每台机器上?,python,Python,我有一个机器列表,我迭代每台机器,为它们创建自定义url,然后执行它来获取它们的JSON数据JSON每台机器的数据如下所示: [{'latestFile': 'abc.tar', 'activeFile': 'yuqq.tar', 'error': 'some-error-1', 'timestamp': 1234558964}] 现在我需要在控制台上为我的每台机器制作这样的表格数据,当我打印它们的IP地址时。如何在Python中实现这一点 Machine Latest File

我有一个机器列表,我迭代每台机器,为它们创建自定义url,然后执行它来获取它们的
JSON
数据<代码>JSON每台机器的数据如下所示:

[{'latestFile': 'abc.tar', 'activeFile': 'yuqq.tar', 'error': 'some-error-1', 'timestamp': 1234558964}]
现在我需要在控制台上为我的每台机器制作这样的表格数据,当我打印它们的IP地址时。如何在Python中实现这一点

Machine    Latest File         Active File              Error           Timestamp
------    --------------      ----------------        ----------      --------------
1.2.3.4        abc.tar            yuqq.tar             some-error-1       1234558964
2.1.4.7        def.tar            mkj.tar              some-error-2       1234558964
3.2.3.9        ghi.tar            ysq.tar              some-error-3       1234558964
7.3.8.6        pqe.tar            prq.tar              some-error-4       1234558964
在每台机器中,某些字段可能不是它们的JSON。那样的话,我可以把那列留给那台机器

下面是我的代码,我迭代每台机器,并在
messages
变量中为每台机器附加JSON响应,但我不确定如何获得每台机器的上述表格格式的数据。这有可能吗

total_machines = len(machines)
messages = []

for machine in machines:
    try:
        ip = machine['ip_address']
        with session.get(
                make_url(env=env, profile=profile, ip=ip)
        ) as response:
            response.raise_for_status()
            machine_json_value = response.json()
        messages.append(machine_json_value)
    except Exception as e:
        messages.append(str(e))

    # how do I make tabular format report for each machine?

基本上,我只想在控制台上对所有机器的输出进行表格格式的格式化。只要格式正确且易于阅读,任何输出都是正常的。

您可以使用pandas软件包转换为dataframe,然后使用print(df)以表格结构打印数据:

In [1]: import pandas as pd                                                     

In [2]: dict1= [{'latestFile': 'abc.tar', 'activeFile': 'yuqq.tar', 'error': 'so
   ...: me-error-1', 'timestamp': 1234558964}]                                  

In [3]: df = pd.DataFrame(dict1)                                                


In [5]: print(df)                                                               
  latestFile activeFile         error   timestamp
0    abc.tar   yuqq.tar  some-error-1  1234558964
如果不想打印索引,则:

In [6]: print(df.to_string(index=False))                                        
latestFile activeFile         error   timestamp
   abc.tar   yuqq.tar  some-error-1  1234558964
当您将所有json值存储在
messages
变量中时。您可以将消息传递到
pd.DataFrame()
以生成数据帧


存储异常错误时需要做的一个更改是另一个变量。

我想把它格式化得很好,就像我在上面的问题中所做的一样。我们能用这种方法做到这一点吗?我也有很多机器,我需要为所有的机器做这些。如果我们对所有机器都使用这种方法,我怎么能只显示一次列?你还在吗?如果json的结构相同,你可以创建一个字典列表,首先列出所有机器的详细信息,然后使用
pd.DataFrame()
创建一个DataFrame。在这种情况下,您的列将只显示一次。如果可能的话,您能否提供一个示例?我从来没有用过熊猫,所以对它的工作原理有点困惑。