Python: 在不使用cmd界面或隐藏或后台的情况下在子shell中执行命令
我想知道怎么执行一个命令而不让命令提示符窗口出现。我的代码是用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()
希望这对你有帮助。