Ошибка, с которой вы столкнулись, возникает из-за того, что
subprocess.run()
неправильно интерпретирует вашу команду. Функция пытается запустить команду в рамках интерпретатора командной строки, и в данном случае интерпретатор воспринимает вашу строку как вызов
CMake
, а не
gta_sa.exe
.
Это происходит потому что аргумент
shell=True
заставляет Python передать вашу команду в командную оболочку (shell), которая, в свою очередь, пытается её выполнить. Ошибка возникает, когда командная оболочка не может корректно разобрать вашу команду.
Чтобы исправить эту проблему, можно разделить команду и аргументы в виде списка элементов, чтобы
subprocess.run()
мог корректно их обработать. Вот как можно изменить ваш код:
import subprocess
# Разделяем команду и аргументы в список
command = ['gta_sa.exe', '-c', '-n', 'NickName', '-h', '51.15.205.209', '-p', '1337']
# Вызываем subprocess.run без использования shell=True
subprocess.run(command)
В этом случае каждый аргумент передаётся отдельно, и
subprocess.run()
может корректно его обработать и передать исполняемому файлу. Этот подход является более безопасным и предпочтительным, так как
shell=True
может повышать риски безопасности, если аргументы командной строки недостаточно контролируются или получаются из внешних, не проверенных источников.
Источник:
ChatGPT