如何从扩展名为.pyw的Python脚本打印到stdout?

Mar*_*lze 9 python windows wxpython stdout pythonw

我有一个带有wxpython GUI和一些命令行参数的python程序.我使用py2exe生成一个单独的Windows可执行文件.我不想在后台有一个命令行窗口,所以py2exe使这个没有这个窗口的pythonw可执行文件.这相当于使用*.pyw扩展名.

问题是,如果你想看到可用的命令行参数,你自然会在shell上执行"main.exe -h".即使argparse提供此信息,由于*.pyw扩展名,它也无法到达stdout.

那么如何使用pythonw为GUI应用程序重新启用stdout呢?

最小的工作范例:

# test.py
print "hello"
Run Code Online (Sandbox Code Playgroud)

执行:

#> python test.py
hello
#> pythonw test.py
#> 
Run Code Online (Sandbox Code Playgroud)

提前感谢任何建议!

Mar*_*lze 0

我终于用某种令人讨厌的伎俩解决了我的问题。我从 argparse 获取帮助信息,如下所示:

class Parser(object):
    def __init__(self):
        [...init argparser...]
        self.help = ""
        self.__argparser.print_help(self)
    def write(self, message):
        self.help += message
Run Code Online (Sandbox Code Playgroud)

然后我只在“关于”对话框中显示帮助信息。

我仍然希望重新启用sys.stdout,但这目前有效。感谢所有建议!