Убить только подпроцесс, созданный python на CMD - PullRequest
0 голосов
/ 27 марта 2020

Я создал скрипт python, который загружается с помощью загрузчика aria2 , выполнив команду оболочки, которая может работать на Windows и Linux.

* 1006. *

Теперь я хочу проверить свою программу на ситуацию, когда файл не может быть загружен. Итак, после выполнения 'python downloader.py' в командной строке (cmd.exe) Windows я нажимаю Ctrl + C, чтобы остановить только загрузку (' aria2 c .exe 'только), но продолжайте запускать мой python код.

Делая это на Ubuntu терминал работает нормально! Но при cmd windows, Ctrl + C останавливает процесс aria2 c .exe ', но также останавливает мой код python. Я хочу знать, я могу добиться этого в командной строке?

Если вам нужно знать, это то, что появляется на cmd:

    File "downloader.py", line 106, in download
      os.system(myCommand)
Keyboard interrupt

Ответы [ 2 ]

1 голос
/ 28 марта 2020

Этот код откроет ваш EXE в отдельной командной строке, если ваша ОС - windows.

import os

if os.name == 'nt':
 os.system("start /wait cmd /c aria2c " + url + options)
else
 os.system("aria2c " + url + options)
1 голос
/ 28 марта 2020

Вы можете перехватить исключение KeyboardInterrupt, а затем выполнить нужный код.

if __name__ == '__main__':
    try:
        os.system("aria2c " + url + options)
    except KeyboardInterrupt:
        print('Keyboard Interrupt Detected')
            # the rest of your code
            pass
...