【发布时间】:2011-02-19 18:35:46
【问题描述】:
可能重复:
How do I eliminate Windows consoles from spawned processes in Python (2.7)?
嗨,
在我的应用程序中,我使用的是外部控制台应用程序。 我正在捕获它的输出(来自标准输出)并处理它。尽管每次我启动此应用程序时都会弹出控制台窗口,这是一个问题(因为在计算过程中我无法将计算机用于其他任何事情),但发生了什么。有没有办法执行控制台应用程序,在没有实际弹出控制台窗口的情况下捕获它的标准输出? 正在执行控制台应用程序的代码:
p = subprocess.Popen([BCALCPATH, "-c", hand, "-t", "a", "-e", "e", "-q", "-d SWNE"], stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
table = p.stdout.read().decode()
所有这些 -c、-t 等都是控制台应用程序的参数。 BCALCPATH 是 .exe 文件的路径。 感谢您的帮助:)
【问题讨论】:
-
感谢您的回复,我也创建了这个:stackoverflow.com/questions/4703983/…;似乎 3.1.3 有一些问题,并且那些标志不存在。但是在文档中也找不到它们:(
-
你链接的问题有你的答案——这些属性已移至
subprocess_模块,你只需要在较新的 Python 版本中从那里获取它们。 -
正如您引用的问题的答案所说,您可以从
_subprocess导入STARTF_USESHOWWINDOW而不是subprocess。或者使用pywin32并从win32process导入。或者只使用1;这是一个不可能改变的常数。 -
谢谢大家;我不知道这个 _subprocess 模块,因为它不在 python 3.1.3 的参考中。这就像一个魅力,ty:)
标签: python windows console-application popen