Я знаю, что этот вопрос задан много раз, и я думаю, что я прочитал их все, но мне не удалось найти ответ на мой вопрос. Я пытаюсь запустить исполняемый файл на машине Windows XP. Исполняемый файл находится в нескольких папках.Использование подпроцесса для запуска исполняемого файла с флагом
C:\folder\program.exe
Когда я запускаю программу, мне нужно включить флаг и путь.
program -f\path\to\file.txt
Если я перейду в папку и запустил команду выше, используя cli, она отлично работает. Я пытаюсь запустить эту программу из моего сценария python.
Я пробовал как Subprocess.popen
, так и subprocess.call
. Кажется, что у меня нет ошибок, но программа также не выполняется.
Есть ли у кого-нибудь предложения о том, что еще я могу попробовать? Thanks
def Run(Path='\data\file.txt'):
import subprocess, time
cmd = '-f'+Path
subprocess.Popen(["program", cmd, "C:\folder\\"])
def Run(Path='\data\file.txt'):
import subprocess, time
cmd = '-f'+Path
subprocess.call(["C:\folder\program.exe", cmd])
ваша команда кли отличается от того, что вы делаете с 'subprocess.Popen'. у вас есть дополнительная часть команды в вашем popen. это будет «program -f \ data \ file.txt C: \ folder \\», в то время как ваша команда cli - это только первые два бита. – mavili
Возможно, вас заинтересует модуль [sh] (http://amoffat.github.io/sh/) - прост в использовании, чем необработанный подпроцесс. –
shell = True например: subprocess.call (["C: \ folder \ program.exe", cmd], shell = True) Использование промежуточной оболочки означает, что переменные, шаблоны глобусов и другие специальные функции оболочки в командная строка обрабатывается до запуска команды. http://pymotw.com/2/subprocess/index.html#module-subprocess – Prasath