Python: 在不使用cmd界面或隐藏或后台的情况下在子shell中执行命令

0 投票
1 回答
3362 浏览
提问于 2025-04-16 04:14

我想知道怎么执行一个命令而不让命令提示符窗口出现。我的代码是用Python写的,操作系统是Windows7。

出问题的那行代码是:os.system(pathandarguments)

程序运行得很好,能执行给定的路径和参数,但我的程序窗口会最小化,我只看到命令提示符窗口一秒钟,然后我的程序窗口就不会再最大化了。

我想在不最小化主窗口的情况下执行这个字符串pathandarguments。如果可以的话,我希望不显示命令提示符窗口。

我尝试了不同的方法来实现这个:

os.system(pathandarguments) = 运行得很好,但会最小化我的程序窗口。

os.popen(pathandarguments) = 错误:CThread::staticThread : 访问冲突在0x77498c19:写入位置0x00000014(不工作)

subprocess.Popen([pathandarguments], shell=False) = 在python脚本的onAction中出现异常(不工作)

提前谢谢你。

编辑 @martineau,问题不是我不能导入process,查看我的应用日志后我发现问题出在第146行的导入process:

13:42:20 T:4116 M:2156859392  NOTICE: import win32api
13:42:20 T:4116 M:2156859392  NOTICE: ImportError
13:42:20 T:4116 M:2156859392  NOTICE: :
13:42:20 T:4116 M:2156859392  NOTICE: No module named win32api

我没有win32api模块。

1 个回答

1

我一直在使用一个开源的Python模块,叫做 process-python,用来控制进程。这个项目的状态说明上写着:“在目前的状态下,它在商业项目Komodo IDE中被广泛使用。”这个模块可以在多个平台上运行,但我开始用它的一个主要原因是,它在Windows上可以启动一个进程,而不会弹出控制台窗口。使用起来非常简单。下面是一个很简单的例子:

import process

p = process.ProcessOpen([eventfilepath]) # open text file with associated program
ignored_exitstatus = p.wait()

希望这对你有帮助。

撰写回答