【问题标题】:Stop invoking of new Shell/cmd prompt , python停止调用新的 Shell/cmd 提示符,python
【发布时间】:2011-03-15 16:49:17
【问题描述】:

我有一个 python 脚本,它应该调用一个 .exe 文件来获得一些结果。该 .exe 文件正在调用新的 Windows 命令提示符(shell)。我不需要 .exe 文件的任何输出。

我正在使用 os.system('segwin.exe args') 在我的脚本中,其中 segwin 是可执行文件。

现在我的问题是:我需要停止调用 cmd 提示符

向所有人致敬

下垂

【问题讨论】:

标签: python shell system operating-system


【解决方案1】:

试试这个(未经测试):

import subprocess
CREATE_NO_WINDOW = 0x08000000
args = [...]
subprocess.check_call(["segwin.exe"] + args, creationflags=CREATE_NO_WINDOW)

请注意,check_call 检查已启动子进程的返回码,如果它不为零则引发异常。如果您不想这样,请改用call

一般情况下,请避免使用os.system(),并尽可能使用subprocess 模块。 os.system() 总是启动一个 shell,这在大多数情况下是不可移植的。

【讨论】:

  • 是的,这是完美的工作,但是,segwin.exe 在成功时返回 1,这会导致通过 check_all() 引发 CalledProcessError。我现在该怎么办:(
  • 非常感谢。,我已经使用了 call() 并且问题已经解决了...... u rockz man sag
  • 为了完整起见,我添加了关于 check_call 的注释。
【解决方案2】:

这实际上是特定于 Windows 的。 Windows 已决定 segwin.exe 是一个基于控制台的应用程序(使用 Windows C 接口中的控制台子系统)。

我知道如何为不一定需要的应用调用提示,但反过来不行,您可以尝试使用 thisthis

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多