/ / Как да направите os.execv () в Python в Windows, без да се отделя от конзолата? - python, windows, cmd, exec

Как да направя os.execv () в Python в Windows, без да се отделя от конзолата? - питън, прозорци, cmd, exec

Използвам Python 2.6 за Windows 7. Имам Windows .cmd файл, който извиква Python да изпълнява CherryPy Web сървъра (версия 3.1.2). Стартирам този .cmd файл, като го изпълня при подсказване в Windows CMD shell. Когато CherryPy забележи, че един от неговите зависими файлове се е променил, той се рестартира. Има няколко проблема, които възникват в тази конфигурация на Windows, защото извикването, което CherryPy използва, за да се рестартира, е

os.execv(sys.executable, args)

но не можете да извикате изпълнимия файл на Python на .cmd файла. Успях да заобиколя този проблем чрез различни гимнастики на Python, а сега го рестартирам чрез обаждане (по същество).

os.execv(sys.argv[0], args)

Но рестартираният процес е отделен от клавиатурата; ще хване Ctrl-C, а след това аз ще попитам

Terminate batch job (Y/N)?

но типът Y или N I не е уловен от прекратяващия .cmd файл, а от Windows CMD обвивката и отговаря

"Y" is not recognized as an internal or external command, operable program or batch file.

Как да настроя нещата в Windows, за да запазя рестартирания процес в това, което наричам "преден план" в Unix?

Отговори:

-3 за отговор № 1

можете да използвате метода subprocess.call като този пример

import subprocess

retcode = subprocess.call(["ls", "-l"])

вижте тази връзка за повече информация за класа на подпроцеса:

подпроцес - управление на подпроцеси