2017-09-14 292 views
0

代碼:subprocess.Popen for循環輸出

with open ('Client.txt','r') as Client_Name: 
    for Client in Client_Name: 
     out = subprocess.Popen(['script.sh', '-byclient', Client], stdout=subprocess.PIPE) 
     outputstring = out.communicate() 
     print (outputstring) 

這個代碼不給輸出,我想在Client.txt文件傳遞客戶端名稱script.sh。任何建議請。

回答

0

您的代碼將名稱傳遞給腳本似乎是正確的,但communicate實際上返回tuple,(stdout_data, stderr_data)

您可能還想通過universal_newlines=TruePopen來解碼輸出。在CLIENT_NAME客戶 :試試這個:

out = subprocess.Popen(['script.sh', '-byclient', Client], 
         stdout=subprocess.PIPE, 
         universal_newlines=True) 
out.wait() # wait until the script has finished 
stdout_data, stderr_data = out.communicate() 
print(stdout_data) 

或者,如果你想實時打印輸出:

out = subprocess.Popen(['script.sh', '-byclient', Client], 
         stdout=subprocess.PIPE, 
         universal_newlines=True) 
for line in out.stdout: 
    print(line) 
+0

開放( 'Client.txt', 'R')作爲CLIENT_NAME : Policy_Detail = subprocess.Popen([ 'script.sh', '-byclient',客戶端],標準輸出= subprocess.PIPE,universal_newlines =真) Policy_Detail.wait() stdout_data,stderr_data = Policy_Detail.communicate() 打印(stdout_data) –

+0

任何建議如果我在循環中傳遞客戶端名稱? –