2015-11-23 4 views
0

Я пытаюсь запустить любой из них в Python ...Python: Вызов исполняемого файла не удается

subprocess.call(r"C:\Windows\System32\fsquirt.exe", shell=True) 
subprocess.call("C:\\Windows\\System32\\fsquirt.exe", shell=True) 
subprocess.call(r"C:/Windows/System32/fsquirt.exe", shell=True) 
subprocess.call("C:/Windows/System32/fsquirt.exe", shell=True) 

все они приводят ...

'C:/Windows/System32/fsquirt.exe' is not recognized as an internal or external command, 
operable program or batch file. 

Если я просто скопировать fsquirt. exe в локальный каталог, я могу назвать это оттуда, поэтому я уверен, что должен просто делать что-то noob-ish с тем, как я использую каталоги.

Как мне это сделать?

+0

Вы пробовали эти http://stackoverflow.com/questions/2953834/windows-path-in-python? – Tempux

+0

Имеет ли ваша программа разрешения на выполнение файлов в директории System32? –

+1

(1) Возможно, это связано с [«Редиректор файловой системы»] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384187 (v ​​= vs.85) .aspx). Попробуйте 'Sysnative' вместо' System32'. (2) Вам не нужно 'shell = True', чтобы запустить команду, используя полный путь – jfs

ответ

1

Проблема была в том, что я использую 64-битную Windows, которая не использует System32 (работает от 32-битного Python). 64-разрядная Windows обычно использует SysWOW64 вместо System32. Вызов виртуального каталога Sysnative вместо любого из них будет определять, какой из них нужно вызывать на основе того, что вы используете (для меня 32-битный Python). Fsquirt существует только в System32, а не в SysWOW64. Это отличается от чего-то вроде Блокнота, который существует в обоих.

subprocess.call("C:/Windows/Sysnative/fsquirt.exe") 
Смежные вопросы