2011-10-28 102 views
-1

目前,我有一個exe,我需要傳遞命令通過python。代碼本身就起作用。當我將該代碼片段與我的最終程序合併時,它失敗了。CTRL-C終止於python

基本上,前兩個文件之後上傳使用程序shell_start(上傳是-f在程序我傳遞命令),蟒決定在與稱爲shell_forward程序底部跳過最後的上傳。最終上傳的3個文件與程序shell_forward甚至不起作用。

所以,我的主要問題,如果你感到困惑,就是:那爲什麼當shell_start完成上傳兩個命令和文件的程序,蟒蛇殼不會讓我在其中鍵入什麼?它就像一個命令提示符窗口,在代碼執行後不會讓你輸入任何東西。

這就是爲什麼我覺得需要ctrl-c來終止前一個進程的shell_start.exe,所以python可能讓我在執行後鍵入。

下面的代碼:

import os, time 

name = raw_input("Input your name: ") 
apn = raw_input("Input apn name: ") 
ecid = raw_input("Input ecid name: ") 
kernel = raw_input("Input kernel name: ") 

os.system('shell_start.exe -f %s'%name) 
time.sleep(1) 
os.system('shell_start.exe -f %s'%apn) 
time.sleep(1) 

os.system('shell_forward.exe --imagefile myfile.img --ecid %(x)s --kernel %(y)s '% {"x" : ecid, "y" : kernel}) 

回答

2

您可以通過與subprocess更換os.system電話有較好的效果。

子流程模塊允許您生成新進程,連接到 其輸入/輸出/錯誤管道,並獲取它們的返回代碼。這 模塊打算更換其他幾個,舊的模塊和功能, 如:

os.system 
os.spawn* 
os.popen* 
popen2.* 
commands.* 

PEP 324見 - PEP提出的子模塊

+0

奏效。我仍然好奇爲什麼這會發生在os.system雖然..嗯......可能是一個蟒蛇故障?我早些時候嘗試使用子進程,但我想讀不同的子進程代碼幫助:P感謝信息! – user715578

+0

編輯:只是將修改後的代碼片段與您的子流程建議結合起來。仍然不啓動下一個程序.. – user715578