700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 【仿真日志 1 】tabulate模块以表格形式打印对象属性【Python】

【仿真日志 1 】tabulate模块以表格形式打印对象属性【Python】

时间:2019-09-01 03:46:23

相关推荐

【仿真日志 1 】tabulate模块以表格形式打印对象属性【Python】

使用Python库的tabulate模块将对象属性的属性名和属性值以表格的形式打印

之前一次理论仿真用的是MATLAB,对于类和对象其实没有那么在意过。在经受MATLAB的卡顿闪退的折磨过后,决定新的一次仿真使用Python重新搭建环境。

第一部分涉及到Python的面对对象的代码,类的编写如下,类中的细节就不写出来了,属性已标出。

class Task(object):def __init__(self,dataSize,priority,value,frequencyLocal,timeLocal,energyLocal,frequencyMEC,timeMEC,energyMEC,timeTransmit,energyTransmit,ifOffload):

因为没有MATLAB的表格功能的加持,如果我想查看对象的具体属性值的话,Python常规输出操作只能把数据挤在一起输出,对象多了很容易让人崩溃,所以搜索了一下可以打印表格的模块,找到了tabulate

使用该模块需要导入或者直接导入tabulate函数

import tabulate#或者from tabulate import tabulate

tabulate函数的基本使用语法如下:

tabulate.tabulate(tabular_data, headers=(), tablefmt=u'simple')

tabular_data:需要打印在表格中的数据。

headers:表头

tablefmt:显示格式,其中显示格式有很多中,具体可参考这位大佬的博客

Python对齐显示||tabulate函数||wcwidth模块||知道这些就够了:

为了获取对象的属性名和属性值,我编写了如下代码:

task = Task(0,0,0,0,0,0,0,0,0,0,0,0)Dict = task.__dict__KEY = list(Dict.keys())VALUE = list(Dict.values())print(tabulate(VALUE,headers=KEY,tablefmt='pipe'))

使用__dict__将对象属性以字典的形式输出,然后分别将key和value赋值给两个列表,最后调用tabulate函数。但是VS Code报错了。

TypeError: 'int' object is not iterable

因为我的对象属性均为int型变量,所以试着改为字符串型,然后将装载属性值的列表VALUE作为一个元素装入另一个列表showdata,因为tabulate函数以逗号判断打印行数,如果直接输出VALUE,会以一列打印:

| dataSize ||:-----------|| 0|| 0|| 0|| 0|| 0|| 0|| 0|| 0|| 0|| 0|| 0|| 0|

最后修改代码如下:

task = Task(0,0,0,0,0,0,0,0,0,0,0,0)Dict = task.__dict__KEY = list(Dict.keys())VALUE = list(Dict.values())VALUE = [str(x) for x in VALUE]showdata = []showdata.append(VALUE)print(tabulate(showdata,headers=KEY,tablefmt='pipe',disable_numparse=True))

打印效果如下:

| dataSize | priority | value | frequencyLocal | timeLocal | energyLocal | frequencyMEC | timeMEC | energyMEC | timeTransmit | energyTransmit | ifOffload ||:-----------|:-----------|:--------|:-----------------|:------------|:--------------|:---------------|:----------|:------------|:---------------|:-----------------|:------------|| 0| 0| 0 | 0| 0 | 0 | 0 | 0 | 0 | 0 | 0| 0 |

经过验证,将整形转为浮点型一样OK。

| dataSize | priority | value | frequencyLocal | timeLocal | energyLocal | frequencyMEC | timeMEC | energyMEC | timeTransmit | energyTransmit | ifOffload ||:-----------|:-----------|:--------|:-----------------|:------------|:--------------|:---------------|:----------|:------------|:---------------|:-----------------|:------------|| 0.0 | 0.0 | 0.0| 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 |

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。