捕获文本文件中的动态命令提示输出

时间:2016-08-11 12:16:30

标签: python cmd

我正在运行一个python脚本,用于检查文件夹中文件的修改。我希望将输出打印在文件中。问题是输出是 DYNAMIC ,cmd始终是打开的,当文件被修改时,我将在cmd窗口中有关于该信息的正确信息。我找到的所有解决方案都与情况相匹配,我只是运行一个命令,然后我就完成了。

我尝试过:
$vat->toJson(); python script.py > d:\output.txt文件为空

命令提示符窗口的示例,在我运行命令output.txt并触摸2个文件后,命令提示符将如下所示。我想捕获那个输出。 enter image description here

解决方案:在我使用的python脚本中,添加python script.py函数,再添加一个参数:logging.basicConfig

3 个答案:

答案 0 :(得分:1)

问题是输出缓冲。如果你等了足够长的时间,你最终会看到数据显示在" blocks"中的文件中。有a few ways around it,例如:

  • 使用-u(无缓冲)标志
  • 运行python
  • 在所有打印语句之后添加sys.stdout.flush()(可以通过将stdout替换为自定义类来简化此操作;请参阅链接的问题以获取更多信息)
  • 如果您的Python版本支持flush=True语句,请添加print选项
  • 如果合适,请使用logging模块而不是print语句。

答案 1 :(得分:0)

python test.py> test.txt

它在Windows cmd提示符下为我工作

答案 2 :(得分:0)

我认为最简单的方法是在脚本中添加文件处理(写入output.txt)。因此,当需要打印您需要的信息时(如您的示例所示,当您触摸两个文件时,您打印两行),您可以打开文件,写入特定行并在完成后关闭它(然后你可以看到更新的output.txt)。 获取output.txt的文件路径作为命令行参数,如

python script.py --o 'd:\output.txt'

例如。