Python在新CMD控制臺(tái)中運(yùn)行其它py程序
想實(shí)現(xiàn)在一個(gè)py程序中,彈出一個(gè)新的CMD控制臺(tái)來(lái)運(yùn)行其它py程序的功能??戳讼露噙M(jìn)程和多線程方面的資料,發(fā)現(xiàn)不是干這個(gè)用的。
專門做這種事情的模塊(庫(kù))叫subprocess(Python自帶),通過(guò)下面的方式可以在Win10中彈出新控制臺(tái)窗口來(lái)運(yùn)行子程序:
subprocess.run(["python", "程序.py"], creationflags = subprocess.CREATE_NEW_CONSOLE)
["python", "程序.py"] 是個(gè)列表:第一個(gè)值表示命令,后面的值都表示命令參數(shù)
python表示系統(tǒng)的Python命令,后面表示把"程序.py"這個(gè)參數(shù)傳遞給前面的python命令
creationflags = subprocess.CREATE_NEW_CONSOLE? 是Win平臺(tái)專用參數(shù):新建控制臺(tái)窗口
Python venv虛擬環(huán)境
但是,如果是Python venv虛擬環(huán)境的話,就不能直接使用系統(tǒng)的Python命令了。那么需要調(diào)用venv虛擬目錄里的python.exe來(lái)解析運(yùn)行py程序,但直接寫硬路徑不太好,所以引入sys模塊(庫(kù)),用里面的 sys.executable 可以獲取到當(dāng)前Python解釋器的位置。
所以上面的代碼改成:
subprocess.run([
sys.executable
, "web.py"], creationflags = subprocess.CREATE_NEW_CONSOLE)
然后又有新疑問(wèn)了,這樣調(diào)用的話,沒(méi)有進(jìn)入venv虛擬環(huán)境啊。這個(gè)請(qǐng)看:
