在我们平常工作中,经常涉及到用代码启动一个可执行文件的情况。那么,在Python环境中,启动一个可执行文件的方式有哪些呢?
一:system方式
os.system() 会保存可执行程序中的打印值和主函数的返回值,且会将执行过程中要打印的内容打印出来
import os
main = "project1.exe"
r_v = os.system(main)
print (r_v )
二:getstatusoutput方法
commands.getstatusoutput() 会保存可执行程序中的打印值和主函数的返回值,但不会将执行过程中要打印的内容打印出来
import subprocess
import os
main = "project1.exe"
if os.path.exists(main):
rc,out= subprocess.getstatusoutput(main)
print (rc)
print ('*'*10)
print (out)
三:popen方式
popen() 会保存可执行程序中的打印值,但不会保存主函数的返回值,也但不会将执行过程中要打印的内容打印出来
import os
main = "project1.exe"
f = os.popen(main)
data = f.readlines()
f.close()
print (data)
四:win32process方式
#启动一个exe;
def openSimulator(self, simulatorPath, minSleep, maxSleep):
handle = win32process.CreateProcess(None,
simulatorPath, None, None, 0,
win32process.CREATE_NO_WINDOW,
None ,
None,
win32process.STARTUPINFO())
rc = win32event.WaitForSingleObject(handle[0], 15 * 1000)
return rc
以上四种方式是我们经常用到的。但是在实际使用中发现,前三种方式均有卡死的情况,**第四种
**是最好,目前尚未发现卡死情况。
希望对各位有用。