2013-09-28 3 views
-3

Это разочаровывает. Я много искал, но ни один из результатов не помог мне. Я пробовал подпроцесс, но я все еще не могу заставить его работать. В основном я хочу, чтобы получить эту линию работы:python запускает команду CMD с опциями

appName = "ap01" 
optna = "-server" 
optnb = "-filename=c:/test.VS" 
optnc = "-display=1" 

os.system('start "VSM" "C:/bin/" {appName, optna, optnb, optnc} ') 

В CMD я бы просто ввести

CD C:/bin/ 

нажмите ввод и затем:

ap01 -server -filename=C:/test.VS -display=1 

ответ

0

как насчет:

import os 

appName = "ap01" 
opts =[ 
    "-server", 
    "-filename=c:/test.VS", 
    "-display=1" 
] 

opts = ' '.join(opts) 
os.system(r'start "" "C:\bin\{:}" {:}'.format(appName, opts)) 

трудно проверить, так как у меня нет ap01, но работает с простой командный файл. В любом случае вы должны использовать подпроцесс так же, как комментарии @ l4mpi. Так что бы сделать это:

import subprocess 
import os 

app=[ 
    "ap01.ext", 
    "-server", 
    "-filename=c:/test.VS", 
    "-display=1" 
] 

os.chdir('"C:/bin/') 
subprocess.call(app, shell=True) 

Примечание это немного разборчивее на окнах, так как он должен знать полное имя приложения. Что касается погоды или нет, приложение может быть завершено через esc, что немного зависит от характера ap01. Если вы запустите его через оболочку, да, это будет завершаться, поскольку оболочка живет и может быть завершена. Если вы его трубку, то это может быть или не быть. Вероятно, вы должны запустить и преобразовать его в качестве службы с помощью INSTSRV.EXE

+0

Хейя работает как шарм! Всего 1 вопрос. Если я запускаю свою программу из CMD, единственный способ ее отмены - использовать ctrl + C. Теперь, если я запустил его из python, если я нажму ESC, он также отменяет его. Есть ли способ, чтобы ESC не отменил мою программу? Одна из причин, почему я пишу GUI для этого приложения, так что я продолжаю отменять его случайно каждый раз, когда я нажимаю esc в windows :( – Dariusz

+0

Как насчет нет? Нет причин использовать 'os.system' после python2.4,' Popen '/' subprocess.call' должен быть предпочтительнее, особенно в этом случае, поскольку вы можете просто установить рабочий каталог с аргументом 'cwd'. – l4mpi

+0

@ l4mpi Я согласен, но это то, что пользователь использовал и не успел сделать Дальше (нет python выше 2.3 под рукой), потому что все происходит просто: P В любом случае я буду пересматривать его сейчас, когда у меня есть время. – joojaa

Смежные вопросы