2016-03-16 86 views
0

即時通訊新的蟒蛇。需要了解更多關於subprocess.popen。蟒蛇subprocess.popen只讀whats返回

我有一個執行另一個python腳本的腳本。下面是我的腳本將嘗試執行另一個腳本的部分。

cmd = ['python %s %s %s %s %s'%(runscript, steps, part_number, serial_number, self.operation)] 
p = subprocess.Popen(cmd, shell = True, stdout=subprocess.PIPE) 
p.wait() 
result = p.stdout.readline() 

的問題是,被執行的腳本,我有,以便通過讀取的結果「結果= p.stdout.readline()」來打印出結果。下面是被執行

def Main(): 

if sys.argv[1] == "Initiate" : 
    doFunc = Functions_obj.Initiate() 
    if doFunc != 0 : 
     print doFunc 
    else : 
     print "Initiate PASS" 

elif sys.argv[1] == "Check" : 
    getDrive = Functions_obj.initialize() 
    if getDrive == "NoDevice" : 
     print getDrive 
     sys.exit() 

    doFunc = Functions_obj.Identify_Drive() 
    if doFunc != 0 : 
     print doFunc 
    else : 
     print "Check PASS" 

我的問題是劇本,我想從被執行,而不是打印腳本「回報」的結果。我如何用subprocess.popen做到這一點?以及如何使用子進程得到什麼返回,而不是打印什麼

回答

0

你不能像函數調用一樣通過管道返回數據。您必須使用許多IPC機制之一,如管道,共享內存,消息傳遞或套接字。管道通常是最簡單的,這就是你在這裏做的。不過,您可以通過管道發送二進制數據。假設它是可以醃製的,你可以嘗試醃製你的數據。