控制台输出样式,格式化最佳实践

时间:2013-10-05 03:47:52

标签: python console output usability

您希望如何格式化控制台脚本的输出?我的意思是在应用程序运行期间产生的输出(log,stdout)。

BG:我有一个python脚本,它接收数据,处理数据,更新数据库中的一些相关数据并输出进度。我可以通过各种方式设置输出样式:

************ Starting programm X ************
Fetching 450 lands... Done
540 local lands found
syncronizing [--------                ] 10%
Done

大写输出或小写字母?缩进是否适用于输出?像破折号或哈希的视觉糖怎么样?进度条如wget?

我知道这是一种设计,但在Web中我们有一些基本规则,我们有可用性,而且我们在控制台输出艺术中没有规则。 Jacob Nilsen关于控制台脚本输出的内容是什么?

1 个答案:

答案 0 :(得分:2)

即使在控制台脚本中,可用性也非常重要。特别是对于任何长时间运行的过程,无论UI是图形的还是在终端中,最好的可用性是显示任务进度的一些指示。我建议看一下Nielsen's heuristics 许多原则直接适用于控制台输出。在谈论可能有用的控制台输出时,有三种启发式方法:

  1. 系统状态的可见性:通过某种进度条在控制台中显示进度,以显示在合理时间内发生的情况。
  2. 一致性和标准:您在问题的破折号或哈希中触及了这一点。
  3. 审美和简约设计:尝试并输出相关且有用的最少量信息。
  4. 对于标准和一致性,请遵循现有流行命令的惯例。结帐的两个好方法是wgetpv。他们两个都有非常相似的进度栏:

    <强> wget的

    44% [================>                      ] 441,017,992  111MB/s  eta 6s
    

    <强> PV

     138MB 0:00:01 [ 107MB/s] [=========================================>] 100%  
    

    它们通常看起来都一样。它们还坚持最小设计,在一行中它们表示文本和条形式的完成百分比,速度,完成的字节数和eta或时间。

    在合理时间内更新。我倾向于每0.1秒在控制台中更新状态。对于感觉响应的界面,您希望它在该范围内。 wget似乎每0.2秒更新一次。但命令watch的默认值是2s,感觉太迟钝了。我通常最终将该命令作为watch -n 0.1 command运行,以获得0.1秒的更新间隔。

    其中一条评论指出您的输出应该是可解析的和可管理的。如果可能的话,这是一件非常好的事情。我特别喜欢wget接近这个问题的方式。如果您在终端中运行wget,它将使用条形进度指示器,但如果您管道到文件或其他程序,它将使用点进度指示器。它会检测您是否有tty或自动管道命令并选择最合适的格式。您可以在--progress参数文档下的手册页上阅读此内容。从本质上讲,它有一个更易于阅读的输出,另一个更具有机器可读性和日志友好性。

    一些相关/有用的链接:

相关问题