Я получаю следующую ошибку:
WindowsError: [Error 2] The system cannot find the file specified
Мой код:
subprocess.call(["<<executable file found in PATH>>"])
Windows 7, 64 бит. Python 3.x последний, стабильный.
Любые идеи?
Спасибо,
Я получаю следующую ошибку:
WindowsError: [Error 2] The system cannot find the file specified
Мой код:
subprocess.call(["<<executable file found in PATH>>"])
Windows 7, 64 бит. Python 3.x последний, стабильный.
Любые идеи?
Спасибо,
Когда команда встроена в оболочку, добавьте к вызову shell = True.
 Например, для dir вы бы набрали:
import subprocess
subprocess.call('dir', shell=True)
Цитировать из документации:
Единственный раз, когда вам нужно указать shell = True в Windows, это когда команда, которую вы хотите выполнить, встроена в оболочку (например, dir или copy). Вам не нужно shell = True для запуска командного файла или исполняемого файла на консоли.
 В Windows я считаю, что модуль subprocess не смотрит в PATH если вы не передадите shell=True. Однако shell=True может представлять угрозу безопасности, если вы передаете аргументы, которые могут поступать извне вашей программы. Тем не менее, чтобы subprocess мог найти правильный исполняемый файл, вы можете использовать  shutil.which. Предположим, исполняемый файл в вашем PATH называется frob:
subprocess.call([shutil.which('frob'), arg1, arg2])
(Это работает на Python 3.3 и выше.)
В Windows вы должны вызвать cmd.exe. Как упоминалось в Apalala, команды Windows реализованы в cmd.exe не как отдельные исполняемые файлы.
например.
subprocess.call(['cmd', '/c', 'dir'])
/c указывает команде cmd выполнить следующую команду
Это безопаснее, чем использование shell = True, что позволяет выполнять инъекции оболочки.
Если путь имеет пробелы, то он цитируется?
И, конечно, вы избегали обратных косых черт правильно или использовали косые черты, правильно?
Если вы используете powershell, то в нем будет subprocess.call(['powershell','-command','dir']). Powershell поддерживает большую часть команд POSIX