2017-09-14 17 views
0

コード:ループ出力用subprocess.Popen

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) 

このコードの出力を与えるものではありません、私はscript.shClient.txtファイルにクライアント名を渡したいです。どんな提案もお願いします。

答えて

0

スクリプトに名前を渡すコードは正しいようですが、communicateは実際にはtuple(stdout_data, stderr_data)を返します。

universal_newlines=TruePopenに渡して、出力をデコードすることもできます。あなたは、リアルタイムで出力を印刷したい場合は

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として:CLIENT_NAMEでのクライアントのための : Policy_Detail = subprocess.Popen([ 'script.sh'、 '-byclient'、クライアント]、STDOUT = subprocess.PIPE、universal_newlines = TRUE) Policy_Detail.wait() stdout_data、stderr_data = Policy_Detail.communicate() print(stdout_data) –

+0

ループ内でクライアント名を渡す場合は、何かお勧めですか? –

関連する問題