Вопрос

Я пытаюсь использовать python для запуска программы.

from subprocess import Popen 
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])

Запуск этого небольшого фрагмента выдает ошибку:

Ошибка Windows:[Ошибка 2] Система не может найти указанный файл

Программа существует, и я скопировал и вставил непосредственно из проводника абсолютный путь к exe-файлу.Я пробовал другие вещи и обнаружил, что если я помещу EXE-файл в исходную папку со скриптом python и использую './sa.exe ', то это сработает.Единственное, о чем я могу думать, это о том, что я запускаю скрипт python (и python) из отдельного раздела (F:).

Есть какие-нибудь идеи?Спасибо

Это было полезно?

Решение

Как документы скажите: "В Windows:класс Popen использует CreateProcess() для выполнения дочерней программы, которая оперирует строками.Если аргументы представляют собой последовательность, они будут преобразованы в строку с использованием метода list2cmdline().".Возможно, этот метод все портит, так почему бы не попробовать более простой подход:

sa_proc = Popen('C:\\sa\\sa.exe --?')

Если это все еще не удается, то:что такое os.environ['COMSPEC'] как раз перед тем, как ты попробуешь это?Что произойдет, если вы добавите , shell=True Для Popenчьи аргументы?

Редактировать:оказывается, по-видимому, это случай простого неправильного написания, так как 'sa' на самом деле было написано программой SpamAssassin - дважды удваивайте s - и то, что OP писал, было spamassasin - один двойной s, но один во второй раз.

Другие советы

Возможно, у вас нет разрешения на выполнение C:\sa\sa.exe.Вы пробовали запускать программу вручную?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top