subprocess.run приводит к пробелу, интерпретируемому как arg? - PullRequest
0 голосов
/ 06 августа 2020

Я пишу чрезвычайно простой набор тестов, и когда я вызываю subprocess.run(["./name-of-binary", args], capture_output=True, shell=True), он сохраняет вывод команды. Когда я вызываю это с помощью args = "", кажется, что он передает пробел в двоичный файл. Когда я запускаю двоичный файл с фактическим пространством, все работает нормально. В чем дело? Спасибо!

1 Ответ

0 голосов
/ 06 августа 2020

Возможное решение (рекомендуется):

if args:
    subprocess.run(["./name-of-binary"],  capture_output=True)
else:
    subprocess.run(["./name-of-binary", args],  capture_output=True)

Или:

subprocess.run("".join(["./name-of-binary", args]),  capture_output=True, shell=True) # this maybe will cause shell injection.

Я думаю, причина в том, что при выполнении этой команды subprocess автоматически добавит пробел между этими элементами . Итак, прямой способ - передать строку напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...