Возможное решение (рекомендуется):
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
автоматически добавит пробел между этими элементами . Итак, прямой способ - передать строку напрямую.