2013-10-05 158 views
1

如何格式化控制台脚本的输出?我的意思是在应用程序运行期间产生输出(日志,标准输出)。控制台输出风格,格式化最佳实践

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

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

大写输出或全部字母小写?应用于输出的缩进?什么视觉糖像破折号或哈希?进度条喜欢在wget中?

我明白这是一种设计,但在网络中我们有一些基本的规则,我们有可用性,并且我们在控制台输出艺术中没有规则。雅各布尼尔森对控制台脚本的输出说什么?

+1

应用程序应该大声地失败,并悄悄地取得成功。最好的输出是没有输出。 –

+0

@WilliamPursell令人敬畏的话!完全同意。 – aIKid

+0

进度条不错,但其余的可能在日志中更好(具有冗长的可选)。计划你的输出是可解析和可移植的。 – kalhartt

回答

2

即使在控制台脚本中,可用性也非常重要。尤其是对于任何长时间运行的过程,无论UI是图形还是终端,都可以更好地展示任务进度。我会建议看看Nielsen's heuristics 许多原则直接适用于控制台输出。有三种启发式特别谈到控制台输出可能看有用:系统状态

  1. 可见性:通过某种进度条在控制台显示进度显示什么是内事合理的时间。
  2. 一致性和标准:您在您的问题破折号或散列中提及此问题。
  3. 美学和极简主义设计:尝试并输出最少量的相关和有用的信息。

对于标准和一致性,请使用现有常用命令的约定。两个好的检查是wgetpv。他们都有着非常相似的寻找progressbars:

wget的

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

光伏

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

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

就合理时间更新而言。我倾向于每0.1秒更新控制台中的状态。为了让界面感觉到响应,你需要这个范围内的东西。 wget似乎每0.2秒更新一次。但命令watch的默认值为2秒,感觉过于缓慢。我通常会以watch -n 0.1 command的结果运行该命令,使其更新间隔为0.1秒。

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

一些相关的/有用的链接: