您希望如何格式化控制台脚本的输出?我的意思是在应用程序运行期间产生的输出(log,stdout)。
BG:我有一个python脚本,它接收数据,处理数据,更新数据库中的一些相关数据并输出进度。我可以通过各种方式设置输出样式:
************ Starting programm X ************
Fetching 450 lands... Done
540 local lands found
syncronizing [-------- ] 10%
Done
大写输出或小写字母?缩进是否适用于输出?像破折号或哈希的视觉糖怎么样?进度条如wget?
我知道这是一种设计,但在Web中我们有一些基本规则,我们有可用性,而且我们在控制台输出艺术中没有规则。 Jacob Nilsen关于控制台脚本输出的内容是什么?
答案 0 :(得分:2)
即使在控制台脚本中,可用性也非常重要。特别是对于任何长时间运行的过程,无论UI是图形的还是在终端中,最好的可用性是显示任务进度的一些指示。我建议看一下Nielsen's heuristics 许多原则直接适用于控制台输出。在谈论可能有用的控制台输出时,有三种启发式方法:
对于标准和一致性,请遵循现有流行命令的惯例。结帐的两个好方法是wget和pv。他们两个都有非常相似的进度栏:
<强> 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参数文档下的手册页上阅读此内容。从本质上讲,它有一个更易于阅读的输出,另一个更具有机器可读性和日志友好性。
一些相关/有用的链接: