2013-06-25 3 views
0

Я хочу запустить cmd exe с помощью скрипта python.Запуск подпроцесса из Python

У меня есть следующий код:

def run_command(command): 
    p = subprocess.Popen(command, shell=True, 
      stdout=subprocess.PIPE, 
      stderr=subprocess.STDOUT) 
    return p.communicate() 

тогда я использую: run_command (г "C: \ Users \ Пользователь \ Desktop \ приложения \ uploader.exe") это возвращает меню опций, где я необходимо указать дополнительный параметр для запуска cmd exe. Поэтому я передаю дополнительные параметры для запуска cmd exe. Как это сделать. Я посмотрел на subprocess.communicate, но я не мог понять его

+0

Иногда вы можете добавить 'stdin = subprocess.PIPE', а затем написать то, что ожидает программа в общении, как в' p.communicate («что хочет программа») '. Если вам действительно нужно что-то интерактивное, у вас проблемы. Его легкость в системах unix-y - просто используйте pexpect для запуска интерактивной подсказки. Но я не знаю никаких консервированных решений в окнах. Вы можете использовать win32 и создать консольное окно для процесса, но его трудно понять и получить право. – tdelaney

ответ

0

Если uploader.exe принимает параметры командной строки, то вы можете попробовать subprocess.call следующим образом:

Если ваша команда uploader.exe, справочник пользователя является C:\Users\...\application, а дополнительный параметр x, вы можете попробовать

import subprocess 
def run_command(command, directory, arg): 
    return subprocess.call(["command %s"%arg], cwd=directory, shell=True) 

run_command("uploader.exe", "C:\\Users\\..\\application", "x") 

Однако, это предполагает, что вы не должны фактически взаимодействовать с indexer.exe после того как вы Popen к нему.

+0

Это отличный ответ, если upload.exe может выполнить свою задачу с помощью аргументов командной строки. – tdelaney

+0

Как сделать консольное окно открытым? после запуска «run_command» – Rohit