Вопрос

Я работаю над небольшим количеством кода, который должен запускать exe-файл внутри папки в моей системе, и получаю сообщение об ошибке ...

WindowsError: [Ошибка 3] Системе не удается найти указанный путь. Вот немного кода:

exepath = os.path.join(EXE file localtion)
exepath = '"' + os.path.normpath(exepath) + '"'
cmd = [exepath, '-el', str(el), '-n', str(z)]

print 'The python program is running this command:'
print cmd

process = Popen(cmd, stderr=STDOUT, stdout=PIPE)
outputstring = process.communicate()[0]

Я импортировал подпроцесс, а также из импорта подпроцесса *

Например, вот так выглядит расположение моего исполняемого файла в первой строке кода, который я показываю:

 exepath= os.path.join('/Program Files','next folder','next folder','blah.exe')

Я что-то упустил?

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

Решение

Вам необходимо правильно экранировать пространство в пути к исполняемому файлу

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

Помимо правильного экранирования пробелов и других символов, которые могут вызвать проблемы (например, /), вы также можете использовать старые 8-символьные пути DOS.

Например, программные файлы будут:

Progra ~ 1, добавив ~ 1 для последних двух символов.

РЕДАКТИРОВАТЬ: Вы можете добавить r в начале строки, делая его необработанным литералом. Python будет читать строковый символ для символа. Вот так:

r " \ Программные файлы "

Если я правильно помню, вам не нужно указывать путь к исполняемому файлу, как вы делаете во второй строке.

РЕДАКТИРОВАТЬ: Ну, просто схватил соседнюю коробку Windows и проверил это. Попен работает одинаково, независимо от того, указан путь или нет. Так что это не проблема.

AFAIK, нет необходимости заключать путь в кавычки, если cmd.exe не участвует в запуске программы.

Кроме того, вы можете использовать переменную среды ProgramFiles , чтобы узнать фактическое местоположение «Program Files», поскольку это зависит от региональных настроек и также может быть настроено с помощью TweakUI.

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