簡體   English   中英

如何防止以編程方式啟動的python腳本在錯誤后退出命令提示符?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM