python - 如何在控制台中向已打印的表格添加新行?

标签 python prettytable

我的脚本需要在处理一些数字时打印一个表格。它的总运行时间是几个小时,我需要它在运行时向打印表添加越来越多的行。我正在尝试使用 PrettyTable,但我对其他建议持开放态度,还可以如何完成它。这是我正在尝试做的一个例子:

from prettytable import PrettyTable
t = PrettyTable(['Name', 'Age'])
t.add_row(['Alice', 24])
print t

#do some work

t.add_row(['Bob', 19])
print t

我得到的结果是这样的:

+-------+-----+
|  Name | Age |
+-------+-----+
| Alice |  24 |
+-------+-----+
+-------+-----+
|  Name | Age |
+-------+-----+
| Alice |  24 |
|  Bob  |  19 |
+-------+-----+

有没有办法在每次添加一行时不打印整个表格,而是在已经打印的内容下面打印一个新行?我想得到这样的东西:

+-------+-----+
|  Name | Age |
+-------+-----+
| Alice |  24 |
+-------+-----+
| Bob   |  19 |
+-------+-----+

第一列左对齐将是一个不错的奖励。

最佳答案

如果您在列名定义中指定了足够的空间来覆盖所有传入项目的最大宽度,下面的代码涵盖了您要求的所有内容(感谢这个问题的所有贡献者 - 我已经使用了这里出现的所有内容在下面提供的代码中):

from __future__ import print_function

from prettytable import PrettyTable
t = PrettyTable(['Name               ', '   Age'])
t.align['Name               '] = 'l'
t.align['   Age'] = 'r'
t.hrules = 1
t.add_row(['Alice', 24])
print(t)

#do some work

t.add_row(['Bob', 19])
print( "\n".join(t.get_string().splitlines()[-2:]) )

#do some work

t.add_row(['AliceInWonderland', 1019])
print( "\n".join(t.get_string().splitlines()[-2:]) )

此处由上面的代码生成的输出也适用于 1019 岁的“AliceInWonderland”:D:

+---------------------+--------+
| Name                |    Age |
+---------------------+--------+
| Alice               |     24 |
+---------------------+--------+
| Bob                 |     19 |
+---------------------+--------+
| AliceInWonderland   |   1019 |
+---------------------+--------+

关于python - 如何在控制台中向已打印的表格添加新行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43374317/

相关文章:

python - 使用 pip 在 ubuntu 上安装 prettytable 时出错

python - 为什么我无法在 Anaconda 中安装 Prettytable?

python - 如何将 pandas.core.frame.DataFrame 转换为列表?

python - Python中赋值错误之前引用的局部变量

python - Pylint 不喜欢 string.format() 并且希望我使用 f-strings。这可以修复吗?

使用 QTextEdit.find() 时出现 Python pyqt 错误 : unexpected type 'builtin_function_or_method'

尝试打印页面中的所有链接时,Python 3.6 : TypeError: a bytes-like object is required, 而不是 'str'

Python 漂亮的按多列排序

datatables - 如果此单元格的两个值在 Julia 的漂亮表格中具有相反的符号,则更改单元格颜色

python - 导入错误 : No module named gspread or csv?