当输出重定向到文件时如何打印到控制台?

How do I print to console when output is redirected to a file?

我想将一些计算的结果写入带有打印功能的文件,并将一些其他数据(如进度指示)打印到 Windows 控制台,以便我可以立即看到它。

我写到控制台的是:C:\Users\BoltKey>python program.py < in.txt > out.txt.

有没有办法重载输出重定向并打印到控制台?或者它只是错误的,如果我想同时打印到控制台和文件,我应该使用文件函数?

这是伪代码:

for i in range(100):
     for j in range(100):
          result = getResult(i, j)
          print result  // print to output file
     consolePrint "progress: " + str(i) + "%"  // print to console

您可以打印到 stderr 来实现这一点(您的命令行只是将 stdout 重定向到一个文件)。有几种方法可以实现这一点,但在 this SO answer:

中可以找到一个很好的方法
    import sys
    from __future__ import print_function

...

    print("Message", file=sys.stderr)

对我来说听起来很丑陋。

只需使用 stderr 来显示进度消息。