[英]How to prevent programmatically started python script from exiting command prompt after error?
我必須經常啟動一些不同的python程序,因此我試圖創建一個可以運行的“主”腳本,該腳本將使用subprocess.Popen
自動啟動所有其他腳本。
我遇到的問題是其中一個程序有錯誤,而不是命令提示符保持打開狀態,因此我可以閱讀並更正錯誤,它會自動關閉。
這是我的代碼。
import subprocess
print "Starting programs"
args = "python C:\\Users\\Admin\\Desktop\\Program1.py"
subprocess.Popen(args)
args = "python C:\\Users\\Admin\\Desktop\\Program2.py"
subprocess.Popen(args)
args = "python C:\\Users\\Admin\\Desktop\\Program3.py"
subprocess.Popen(args)
我也已經研究過os.system
,但是找不到任何允許這樣做的東西。
您的代碼不會顯示子流程的輸出,這就是為什么看不到異常的原因。 要解決此問題,只需為要運行的每個程序添加一個try-except塊以查看所有異常,然后打印每個程序的輸出以查看其是否失敗,如下所示:
import subprocess
def run_programs():
try:
args = "python C:\\Users\\Admin\\Desktop\\Program1.py"
out = subprocess.Popen(args)
print out
except Exception as e:
print 'Error in Program1.py: {}'.format(e)
try:
args = "python C:\\Users\\Admin\\Desktop\\Program2.py"
out = subprocess.Popen(args)
print out
except Exception as e:
print 'Error in Program2.py: {}'.format(e)
if __name__ == '__main__':
print "Starting programs"
run_programs()
如Padraic所指出的,如果您要運行許多程序,則for循環將更為實用。
import subprocess
def run_programs():
cmds = [
"python C:\\Users\\Admin\\Desktop\\Program1.py",
"python C:\\Users\\Admin\\Desktop\\Program2.py"
"python C:\\Users\\Admin\\Desktop\\Program3.py"
]
for cmd in cmds:
try:
out = subprocess.Popen(cmd)
print out
except Exception as e:
print 'Error in {}: {}'.format(cmd, e)
if __name__ == '__main__':
print "Starting programs"
run_programs()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.