2017-06-21 1 views
0

私はbashファイルをDjango Webアプリケーションプロジェクト用にPythonで実行する必要がありますが、bashファイルの出力は取得できません。ウェブページ)。ここでのコードは次のとおりです。それはWebページの後半に表示する必要があるため、私は出力をキャプチャする必要がbashファイルの出力をpythonのサブプロセスから取得しました

#!/bin/sh 
file="[email protected]" 
for f in $file 
    do 
    echo "Argument is $f" 

done 

:countingbash.shで

import subprocess 


output = subprocess.Popen(['bash', 'countingbash.sh', "hello", "world"]) 
print (output) 

:私のpythonファイル内

。 .pyファイルを実行すると、出力はbashファイルを実行することによって出力されるべきものではありません。出力は次のようになります。

<subprocess.Popen object at 0x102cab290> 

それがあるべき一方:

Argument is hello 
Argument is world 

私は印刷(出力)を記述することなく、単独のファイルを実行すると、エディタが出力を示すが、どのように私はそれをキャプチャするのですか?

答えて

1

この変更はあなたに正しい出力を与える必要があり、私は標準出力パイプを開き、バイナリstring.Iからシェルの出力を変換したが、同様の作業ディレクトリの問題のいずれかを避けるために、絶対パスを使用しています

output = subprocess.Popen(['bash', '/home/demo/test.sh', "hello", "world"], stdout=subprocess.PIPE) 
print (output.communicate()[0].decode('ascii')) 
関連する問題