如何方便地禁用print语句以便pythonw可以运行?

时间:2014-11-10 05:19:42

标签: python pythonw

我有一个python脚本(.py),它在控制台上正常运行。当我尝试通过将扩展名更改为(.pyw)来使用pythonw运行脚本时,它停止工作。我的猜测是,打印语句导致pythonw根据Google搜索返回的结果而死亡。

是否有一种方便的方法来禁用print语句以便pythonw可以运行?我在脚本中有太多的打印语句。逐个更改它们是不切实际的,特别是如果我想切换回使用普通的python。

感谢。

3 个答案:

答案 0 :(得分:1)

创建自己的打印功能,比如out,然后将所有print更改为out。然后可以将out方法更改为输出到控制台或文件。

答案 1 :(得分:1)

我发现另一个StackOverflow线程的答案对我来说很有用。我赞成了答案。信用不是我的。如果您想要upvote,请转到该链接并进行upvote。见下面的链接。

Can I get the output of "print" statement in pythonw?

您可以通过分配给sys.stdout来全局重定向stdout:

import sys sys.stdout = open("mylog.txt", "w") 然后你的程序的其余部分stdout,包括print语句,将转到mylog.txt。

答案 2 :(得分:0)

只需将所有输出重定向到/ dev / null。 Python有一种平台无关的方法来实现这一点。

import os
import sys

# Only redirect for pythonw not regular python.
if os.path.splitext(os.path.basename(sys.executable))[0] == 'pythonw':
    sys.stdout = open(os.devnull, 'w')
    sys.stderr = open(os.devnull, 'w')