Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检查脚本活动的代码(python)_Python - Fatal编程技术网

检查脚本活动的代码(python)

检查脚本活动的代码(python),python,Python,简单问题: 是否有一些代码或函数可以添加到大多数脚本中,让我知道其“正在运行” 因此,在执行foo.py之后,大多数人都会看到一个闪烁的光标。我目前正在运行一个新的大型脚本,它似乎正在工作,但直到抛出错误或它完成(可能不会完成)我才知道 我假设您可以在脚本中每个for循环的末尾添加一个简单的打印“foo bar” 是否还有其他简洁的视觉读出技巧?您可以将内容写入文件。你可以打印出点,就像我喜欢的那样。对于日志记录,您可以检查。打印“foo-bar”技巧基本上就是人们对快速脏脚本所做的。但是,如果

简单问题:

是否有一些代码或函数可以添加到大多数脚本中,让我知道其“正在运行”

因此,在执行
foo.py
之后,大多数人都会看到一个闪烁的光标。我目前正在运行一个新的大型脚本,它似乎正在工作,但直到抛出错误或它完成(可能不会完成)我才知道

我假设您可以在脚本中每个for循环的末尾添加一个简单的
打印“foo bar”

是否还有其他简洁的视觉读出技巧?

您可以将内容写入文件。你可以打印出点,就像我喜欢的那样。对于日志记录,您可以检查。

打印“foo-bar”技巧基本上就是人们对快速脏脚本所做的。但是,如果有很多循环,则不希望为每个循环打印一行。除了它会填满终端的滚动缓冲区之外,在许多终端上,当它反复打印同一行时,很难看到是否发生了任何事情。如果你的循环足够快,甚至可能意味着你花在打印上的时间比实际工作要多

因此,这个技巧有一些常见的变化:

  • 打印字符或短单词,而不是整行
  • 打印不断变化的内容
  • 仅在循环中每隔N次打印一次
  • 要打印没有换行符的单词,只需
    打印'foo',
    。要打印既没有换行符也没有空格的字符,必须
    sys.stdout.write('.')
    。无论哪种方式,人们都可以看到光标水平移动,因此很明显反馈速度有多快

    如果在…循环中有一个n的
    ,则可以打印
    n
    。或者,如果您正在逐步构建某些内容,则可以打印
    len(something)
    ,或
    outfile.ftell()
    ,或其他内容。即使它没有客观意义,但它不断变化的事实意味着你可以知道发生了什么

    不总是打印的最简单方法是添加一个计数器,并执行类似于
    counter+=1的操作;如果计数器%250==0:打印“foo”
    。这方面的变化包括检查时间,并且仅在上次
    打印
    后1秒或更长时间内打印,或者将任务分成子任务,并在每个子任务结束时打印

    很明显,你可以混合搭配这些

    但是不要在这上面花太多的精力。如果这不是一个快速和肮脏的帮助你自己使用,你可能想要一些看起来更专业的东西。只要您希望在一个合理可用的终端上,您就可以在没有
    \n
    的情况下打印
    \r
    ,并重复覆盖该行,从而可以绘制漂亮的进度条或其他反馈(ala
    curl
    wget
    scp
    ,以及其他类似的Unix工具)。但当然,您还需要检测您何时不在终端上,或者至少将这些内容写入
    stderr
    而不是
    stdout
    ,这样,如果有人重定向或传输您的脚本,他们不会收到一堆垃圾。您可能想要尝试检测终端宽度,如果您可以检测到它,并且它>80,您可以缩放进度条或显示更多信息。等等


    这会变得复杂,所以您可能需要寻找一个库来为您实现这一点。有很多选择,所以请查看PyPI和/或ActiveState配方。

    Sweet,我会看一看。这里的答案不“正确”,我给了你答案深度的复选标记。非常感谢!原谅我,我的意思是说“不”,不是“不”