2017-09-14 124 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

任何建议如果我在循环中传递客户端名称? –