Как остановить закрытие CMD (из subprocess.popen) при возникновении исключения? - PullRequest
0 голосов
/ 30 января 2020

Я порождаю несколько CMD с данным файлом python, используя subprocess.popen. Все с input() в конце. Проблема в том, что если в коде есть какое-либо возбужденное исключение, окно просто закрывается, и я не вижу, что с ним произошло.

Я хочу, чтобы он оставался открытым в любом случае независимо от ошибки. так что я могу видеть это. Или верните сообщение об ошибке в главном окне, как будто этот скрипт не запускается из-за этого ..

Я запускаю это на Windows:

import sys
import platform
from subprocess import Popen,PIPE

pipelines = [("Name1","path1"),
         ("Name2","path2")]

# define a command that starts new terminal
if platform.system() == "Windows":
  new_window_command = "cmd.exe /c start".split()
else:  #XXX this can be made more portable
  new_window_command = "x-terminal-emulator -e".split()
processes = []
for i in range(len(pipelines)):
  # open new consoles, display messages
  echo = [sys.executable, "-c",
        "import sys; print(sys.argv[1]);  from {} import {}; obj = {}(); obj.run();  input('Press Enter..')".format(pipelines[i][1],pipelines[i][0],pipelines[i][0])]
  processes.append(Popen(new_window_command + echo + [pipelines[i][0]])) 

for proc in processes:    
  proc.wait()

1 Ответ

0 голосов
/ 30 января 2020

Чтобы увидеть ошибку, попробуйте заключить нужный фрагмент кода в try / except

try:
    ...
except Exception as e:
    print(e)
...