2

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

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

谢谢。

4

3 回答 3

1

创建您自己的打印函数,例如out,然后将所有prints 更改为out. out然后可以更改该方法一次以输出到控制台或文件。

于 2014-11-10T05:24:36.770 回答
1

我从另一个 StackOverflow 线程中发现了一个对我来说效果很好的答案。我已经对答案投了赞成票。功劳不是我的。如果您想投票,请转到该链接并投票。请参阅下面的链接。

我可以在 pythonw 中获得“print”语句的输出吗?

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

import sys sys.stdout = open("mylog.txt", "w") 然后程序的其他标准输出,包括打印语句,将转到 mylog.txt。

于 2014-11-11T08:23:40.647 回答
1

只需将所有输出重定向到 /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')
于 2017-01-27T00:11:35.563 回答