Подтвердить что ты не робот

Subprocess.call, требующий разделения всех параметров запятыми

Раньше я имел возможность делать subprocess.call(["command","-option value -option value"]), и он работал бы, чтобы команда правильно работала с вещами в кавычках, но теперь мне нужно изменить команду вызова подпроцесса, чтобы выглядеть так:

subprocess.call(["command","-option","value","-option","value"])

есть ли что-то, что я могу сделать, чтобы заставить его снова работать в python?

os.system("command -option value -option value") работает так же, как и раньше.

4b9b3361

Ответ 1

Вам нужно указать shell=True, чтобы получить subprocess.call для интерпретации строки.

См. примечание в subprocess.Popen документации конструктора (метод subprocess.call принимает те же аргументы, что и конструктор subprocess.Popen).

Ответ 2

Избегайте shell=True, если можете - это риск безопасности. Для этой цели shlex.split хватает:

import subprocess
import shlex
subprocess.call(shlex.split("command -option value -option value"))