检查脚本活动的代码(python)
简单问题: 是否有一些代码或函数可以添加到大多数脚本中,让我知道其“正在运行” 因此,在执行检查脚本活动的代码(python),python,Python,简单问题: 是否有一些代码或函数可以添加到大多数脚本中,让我知道其“正在运行” 因此,在执行foo.py之后,大多数人都会看到一个闪烁的光标。我目前正在运行一个新的大型脚本,它似乎正在工作,但直到抛出错误或它完成(可能不会完成)我才知道 我假设您可以在脚本中每个for循环的末尾添加一个简单的打印“foo bar” 是否还有其他简洁的视觉读出技巧?您可以将内容写入文件。你可以打印出点,就像我喜欢的那样。对于日志记录,您可以检查。打印“foo-bar”技巧基本上就是人们对快速脏脚本所做的。但是,如果
foo.py
之后,大多数人都会看到一个闪烁的光标。我目前正在运行一个新的大型脚本,它似乎正在工作,但直到抛出错误或它完成(可能不会完成)我才知道
我假设您可以在脚本中每个for循环的末尾添加一个简单的打印“foo bar”
是否还有其他简洁的视觉读出技巧?您可以将内容写入文件。你可以打印出点,就像我喜欢的那样。对于日志记录,您可以检查。打印“foo-bar”技巧基本上就是人们对快速脏脚本所做的。但是,如果有很多循环,则不希望为每个循环打印一行。除了它会填满终端的滚动缓冲区之外,在许多终端上,当它反复打印同一行时,很难看到是否发生了任何事情。如果你的循环足够快,甚至可能意味着你花在打印上的时间比实际工作要多
因此,这个技巧有一些常见的变化:
打印'foo',
。要打印既没有换行符也没有空格的字符,必须sys.stdout.write('.')
。无论哪种方式,人们都可以看到光标水平移动,因此很明显反馈速度有多快
如果在…循环中有一个n的,则可以打印n
。或者,如果您正在逐步构建某些内容,则可以打印len(something)
,或outfile.ftell()
,或其他内容。即使它没有客观意义,但它不断变化的事实意味着你可以知道发生了什么
不总是打印的最简单方法是添加一个计数器,并执行类似于counter+=1的操作;如果计数器%250==0:打印“foo”
。这方面的变化包括检查时间,并且仅在上次打印
后1秒或更长时间内打印,或者将任务分成子任务,并在每个子任务结束时打印
很明显,你可以混合搭配这些
但是不要在这上面花太多的精力。如果这不是一个快速和肮脏的帮助你自己使用,你可能想要一些看起来更专业的东西。只要您希望在一个合理可用的终端上,您就可以在没有\n
的情况下打印\r
,并重复覆盖该行,从而可以绘制漂亮的进度条或其他反馈(alacurl
,wget
,scp
,以及其他类似的Unix工具)。但当然,您还需要检测您何时不在终端上,或者至少将这些内容写入stderr
而不是stdout
,这样,如果有人重定向或传输您的脚本,他们不会收到一堆垃圾。您可能想要尝试检测终端宽度,如果您可以检测到它,并且它>80,您可以缩放进度条或显示更多信息。等等
这会变得复杂,所以您可能需要寻找一个库来为您实现这一点。有很多选择,所以请查看PyPI和/或ActiveState配方。Sweet,我会看一看。这里的答案不“正确”,我给了你答案深度的复选标记。非常感谢!原谅我,我的意思是说“不”,不是“不”