В python я использую subprocess.Popen() для запуска нескольких процессов, я хочу отлаживать эти процессы, но окна этих процессов исчезли быстро, и у меня не было возможности увидеть сообщение об ошибке. Я хотел бы знать, есть ли способ остановить окно от исчезновения или написать содержимое в окнах в файл, чтобы я мог увидеть сообщение об ошибке позже.окно подпроцесса быстро исчезает
Заранее благодарен!
Экранирование команд для прохождения через cmd.exe может быть затруднено и (AFAICT) даже иногда невозможно. Если python.exe доступен, я бы использовал это вместо этого. Предполагая, что командная строка или список находится в 'args', вы можете использовать следующее:' python = sys.executable.replace ('pythonw.exe', 'python.exe'); '' subprocess.call ([python, ' -i ',' -c ',' import subprocess; rc = subprocess.call (% r) '% args], creationflags = subprocess.CREATE_NEW_CONSOLE) '. Новое окно консоли останется открытым в REPL Python. – eryksun
@eryksun: API CreateProcess знает только исполняемый файл и одну строку командной строки (LPCTSTR), поэтому экранирование обычно не является реальной проблемой в Windows. Но я думаю, что ваш метод кажется действительно приятным, и вы можете сделать ответ –
cmd.exe разбирает командную строку перед вызовом 'CreateProcess' или' ShellExecuteEx' - для чего он может совершать несколько вызовов, если он токенизирует командную строку в выполнение нескольких команд. – eryksun