Задать вопрос
@kkirolla

Как заставить код работать?

import subprocess
subprocess.run('gta_sa.exe -c -n NickName -h 51.15.205.209 -p 1337', shell=True)

Есть такой код. По идее, он должен открывать SAMP и конектить на сервер с нужным IP , ником и портом, но выходит ошибка

D:\GRAND_PC_ADMIN_10_04_24>python test.py
CMake Warning:
Ignoring extra path from command line:

"gta_sa.exe -c -n NickName -h 51.15.205.209 -p 1337"

CMake Error: The source directory "/c" does not exist.
Specify --help for usage, or press the help button on the CMake GUI.
  • Вопрос задан
  • 232 просмотра
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Ошибка, с которой вы столкнулись, возникает из-за того, что 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
Ответ написан
Комментировать
ivankarmanow
@ivankarmanow
Начинающий программист
Судя по ошибке, дело не в Python-скрипте, а в самой программе, которую пытаешься запустить. Если ту же самую команду запустить через консоль, ошибка сохраняется?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы