I am LAZY bones? AN ancient AND boring SITE

python程序,在windows下调用子进程,不产生cmd窗口的办法

python写的GTK程序,会有这样一个怪现象,本来在cmd下用 python xxx.py 启动,还好好的,但是用py2exe编译以后,再用subprocess调用命令行程序的时候,就发现一个黑乎乎的cmd窗口跳出来了,特别难看,要消除它其实也还比较容易,但是要使用startupinfo这个windows only的参数,以下代码是linux和windows通用的例子:

if os.name == 'nt':
    startupinfo = subprocess.STARTUPINFO()
    startupinfo.dwFlags |= subprocess.STARTF_USESHOWWINDOW
    startupinfo.wShowWindow = subprocess.SW_HIDE
else:
    startupinfo = None
subprocess.Popen(要运行的命令, startupinfo=startupinfo)

经过今天的修改,gmbox 0.2.4 beta 已经基本能在win下运行了,哈哈。

PS:贴一个ultraedit的python语法高亮文件,偶尔在win下改改代码可能会用到,在这里

最后修改时间: 2010年04月24日 20:16

本文章发表于: 2010年04月24日 20:16 | 所属分类:编程相关. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

4 个评论 关于: “python程序,在windows下调用子进程,不产生cmd窗口的办法”

  1. Shellexy 在 2010年04月24日 20:25 说:回复

    用 os.popen 就可以了,虽然 python3 会去掉

    • bones7456 在 2010年04月24日 20:57 说:回复

      呃,不是不推荐用 os.opoen 了嘛。。。

  2. xiooli 在 2010年04月24日 20:36 说:回复

    额,win下还有啥可用的命令行程序么?

    • bones7456 在 2010年04月24日 20:58 说:回复

      比如gmbox就调用 mpg123.exe,其实很多linux下的命令行程序都有win版的。

xiooli 发表评论




取消