Экранирование кавычек в подпроцессах Python для WindowsPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Экранирование кавычек в подпроцессах Python для Windows

Сообщение Anonymous »

Я пытаюсь завершить программу Python, которая сама использует множество потоков.
Если я не ошибаюсь, просто sys.exit() работает нормально .
Однако, чтобы избежать многих ошибок, в том числе потери ссылок на темы, я попробовал следующее:
subprocess.Popen(['start', 'cmd.exe', '/c', f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Я подумал, что проблема в экранировании кавычек, поэтому попробовал несколько вещей, но безуспешно. Я сдался и сделал следующее, и все сработало отлично.
with open('exit_self.bat', 'w') as file:
file.write(f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"&del exit_self.bat')
subprocess.Popen(['start', 'cmd.exe', '/c', 'exit_self.bat'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Как это сделать без временных файлов? Что я пропустил? Для справки, я использовал /k вместо параметра /c cmd.exe, чтобы выйти из окна и проверить сообщение об ошибке в окне, оно выглядит следующим образом:
Waiting for 0 seconds, press a key to continue ...
ERROR: Invalid argument/option - 'eq'.
Type "TASKKILL /?" for usage.

Не уверен, поможет ли это, но я добавил echo, чтобы увидеть синтаксис выполняемой команды:
subprocess.Popen(['start', 'cmd.exe', '/k', 'echo', f'timeout 5&taskkill /f /fi "PID eq {os.getppid()}"'], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)

Результат:
"timeout 5&taskkill /f /fi \"PID eq 3988\""


Подробнее здесь: https://stackoverflow.com/questions/790 ... or-windows
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»