Вопрос
Я работаю над небольшим количеством кода, который должен запускать 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.