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

2024-09-25 12:29:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

大写输出还是所有字母都是小写?是否对输出应用缩进?视觉上的糖,比如破折号或散列呢?像wget中的进度条?在

我知道这是一种设计,但在Web上我们有一些基本规则,我们有可用性,而且在控制台输出艺术方面没有规则。Jacob Nilsen怎么说控制台脚本的输出?在


Tags: 数据脚本程序运行log数据库规则stdout方式
1条回答
网友
1楼 · 发布于 2024-09-25 12:29:10

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

  1. 系统状态的可见性:通过某种进度条在控制台中显示进度,以显示在合理时间内发生的事情。在
  2. 一致性和标准:您在问题的破折号或散列中提到了这一点。在
  3. 美学和极简主义设计:尝试并输出最少数量的相关和有用的信息。在

对于标准和一致性,请遵循现有流行命令的惯例。两个好的检查方法是wget和{a3}。它们都有非常相似的进度条:

wget

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

pv

^{pr2}$

他们两个看起来一般都一样。它们还坚持最小的设计,在一行中,它们以文本和条形形式表示完成百分比、速度、完成的字节数以及预计到达时间或经过的时间。在

在合理的时间内更新。我倾向于每隔0.1秒更新一次控制台中的状态。为了让界面有反应,你需要它在这个范围内。似乎每2秒更新一次。但是命令watch的默认值是2s,这感觉太慢了。我通常以watch -n 0.1 command的形式运行该命令,以获得0.1s的更新间隔。在

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

一些相关/有用的链接:

相关问题 更多 >