python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口
讓我們首先分析兩個發布的Python腳本行在執行Python腳本時真正做了些什么。感謝eryksun進行深入調查,真正使用Python導致正確的描述,現在可以在下面閱讀。
os.system()導致在前臺使用控制臺窗口執行cmd.exe /C并停止執行Python腳本,直到Windows命令解釋程序終止。如果Python腳本本身在控制臺中執行,則啟動的cmd.exe將繼承此控制臺。
此命令進程以start開始,內部命令為cmd.exe,另一個命令進程帶有前臺控制臺窗口。很好,但是第二個命令進程在完成命令執行后立即終止。如果您希望在運行Python腳本時看到執行腳本或Python解釋器本身輸出錯誤,那就不太好了。
因此,第二個命令進程使用選項cmd.exe啟動/k以繼續運行此命令進程,繼承由start創建的控制臺,并在完成指定命令的執行后打開控制臺窗口
第二個命令進程運行內部命令call,這完全沒有必要,因為python是真實的python.exe,一個控制臺應用程序而不是批處理文件。因此,根本不需要call。
建議始終使用完整的文件名指定應用程序和腳本,即文件名+文件擴展名,而不僅僅是文件名。如果已知并修復了可執行文件/腳本的路徑,則也應指定它。這使得應用程序/腳本的執行獨立于當前目錄和環境變量PATHEXT和PATH。
Python解釋器在第二個控制臺中執行指定的Python腳本。
os.system()完成后,第一個命令進程在start完成后立即終止,這在cmd.exe /k開始python.exe并且command = 'start cmd.exe /K python.exe %s ^&^& exit' % (some_py_prog)
os.system(command)正在解釋Py??thon腳本時已經發生。
剩下的就是使用腳本運行Python解釋器的第二個命令進程。即使在完成指定Python腳本的執行后Python解釋器終止后,此命令進程仍會繼續運行。
因此,一旦Python解釋器完成Python腳本的執行,目標是終止第二個命令進程和控制臺窗口,但前提是腳本執行時沒有錯誤。
好吧,我根本沒有安裝Python,但我認為它在執行腳本時出現錯誤,返回代碼大于0。否則,在成功執行腳本時退出代碼為0。
因此可以使用這樣的命令:
start cmd.exe /K
由python.exe開始的第二個命令進程執行的命令行現在包含兩個命令:
Python解釋器exit,腳本作為參數執行
和
內部命令0,只有當第一個命令的退出代碼為&&時,由于操作符^,Windows命令解釋程序才應執行第二個命令。
醇>
每個&符號必須使用Windows命令解釋器的轉義字符進行轉義,該命令解釋符是插入符號&&。這是必要的,否則start將被運行start的第一個命令進程解釋,作為在成功執行Test.bat后運行的附加命令。
請注意,我沒有安裝Python,因此只需在命令提示符窗口中使用批處理文件@echo %~dp0 executed. & exit /B 1和單個命令行start cmd.exe /K call Test.bat ^&^& exit進行測試。
Test.bat
call是批處理文件,而不是需要使用命令Test.bat的可執行文件。沒有特定窗口標題的啟動命令進程保持打開狀態,因為Test.bat退出并返回代碼1.如果我在{{1}}命令行末尾修改數字1到0,則啟動的命令進程退出。
當然,使用此解決方案時,腳本代碼本身必須停止腳本代碼檢測到的錯誤的腳本執行。
總結
以上是生活随笔為你收集整理的python如何关闭窗口仍能运行_Python在退出时关闭自己的CMD shell窗口的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 光大携程菁英白金卡刷卡是双倍积分吗?光大
- 下一篇: 信用卡跑路了会抓人吗?被抓直接判刑是不是