如何在不等待返回代码的情况下运行程序?

时间:2013-03-31 11:32:00

标签: python python-3.x

我正在使用Python 3.3。我试过这个:

# beginning and ending quotes are to compensate for Microsoft kludge
emuleappfile = '"'+os.environ['ProgramFiles']+'\\eMule\\emule.exe'+'"'
os.system(emuleappfile)
# vvv beginning and ending quotes are to compensate for Microsoft kludge
vuzeappfile = '"'+os.environ['ProgramFiles']+'\\Vuze\\azureus.exe'+'"'
os.system(vuzeappfile )

和这个

# beginning and ending quotes are to compensate for Microsoft kludge
emuleappfile = '"'+os.environ['ProgramFiles']+'\\eMule\\emule.exe'+'"'
itran = os.system(emuleappfile)
# vvv beginning and ending quotes are to compensate for Microsoft kludge
vuzeappfile = '"'+os.environ['ProgramFiles']+'\\Vuze\\azureus.exe'+'"'
itran = os.system(vuzeappfile)
emule打开,但程序在emule关闭之前不会打开vuze。 GRR。

2 个答案:

答案 0 :(得分:2)

使用subprocess.Popen。在Windows上,它调用Win32 API函数CreateProcess

http://docs.python.org/3/library/subprocess

import os
import subprocess

emuleappfile = os.path.join(os.environ['ProgramFiles'], 'eMule', 'emule.exe')
vuzeappfile = os.path.join(os.environ['ProgramFiles'], 'Vuze', 'azureus.exe')
proc_emule = subprocess.Popen([emuleappfile])
proc_vuze = subprocess.Popen([vuzeappfile])

修改

Popen公开了STARTUPINFO结构的几个字段,用于设置进程和窗口属性。请参阅子流程文档中的Windows Popen Helpers部分。例如,使用以下命令在隐藏窗口中启动vuze,这也是Win32 ShowWindow窗口的默认状态:

si = subprocess.STARTUPINFO()
si.dwFlags = subprocess.STARTF_USESHOWWINDOW
si.wShowWindow = subprocess.SW_HIDE
proc_vuze = subprocess.Popen([vuzeappfile], startupinfo=si)

答案 1 :(得分:0)

os.system(''.join(['start "', os.environ['ProgramFiles'], '\\eMule\\emule.exe', '"']))(特别是start部分)将在单独的窗口中运行可执行文件,因此不会阻止当前的可执行文件。