Как запустить программу с большим количеством аргументов в Python / Linux - PullRequest
1 голос
/ 13 апреля 2011

Следующий код отлично работает в Windows:

subprocess.Popen([PATH_TO_G++]/g++ file.cpp -o file.exe)

Однако в Linux я получаю следующую ошибку:

Ошибка OSE: [Errno 2] Нет такого файла или каталога

После прочтения документации и нескольких потоков SO я обнаружил, что subprocess.Popen работает по-разному в системах Windows и nix.В Windows он принимает строку в качестве параметра и запускает ее так же, как вы запускаете ее в терминале.

В Linux, однако, требуется список строк, если у вас есть параметры.Первым значением является сама программа, затем идут атрибуты.Вы можете заставить его вести себя как Windows, передав аргумент Shell = True, но это не очень хорошее решение для меня.

Я попробовал функцию shlex.split, но она все еще не работает.

1 Ответ

4 голосов
/ 13 апреля 2011

Исходя из вашего примера, вам нужно убедиться, что команда правильно указана в кавычках:

subprocess.Popen([PATH_TO_G++ + "/g++", "file.cpp", "-o", "file.exe"])

Нет никакого способа, которым PATH_TO_G ++ является допустимым именем переменной, поэтому я просто собираюсь предположить, что вы предоставили это в качестве примера.

Теперь, что более важно, что вы пытаетесь сделать с подпроцессом? Просто запустите его и он будет основной операцией? Запустить и захватить вывод? Запустить его в фоновом режиме?

Документация для модуля подпроцесса довольно ясна и содержит множество примеров того, как вы можете его использовать.

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