2017-07-19 3 views
0

サブプロセスを使用して次のコマンドの出力をリストに表示する方法を教えてもらえますか?Pythonのサブプロセスが配列に出力される

curl --silent -u username:password http://localhost:55672/api/queues | sed 's/,/\n/g' | grep '"name"\:' | tr -d "name:" | tr -d -d \" 

は "subprocess.popen"、 "subprocess.call" を試してみました "subprocess.popen" が、無駄に。以下は私が試した一例です。

import json 
import subprocess 

HO=subprocess.check_output("curl --silent -u username:passwordhttp://localhost:55672/api/queues | sed 's/,/\n/g' | grep '"name"\:' | tr -d "name:" | tr -d -d \"", shell=True) 

print HO 

後者は

File "./rb.py", line 10 
    HO=subprocess.check_output("curl --silent -u username:password http://localhost:55672/api/queues | sed 's/,/\n/g' | grep '"name"\:' | tr -d "name:" | tr -d -d \"", shell=True) 
                                    ^
SyntaxError: invalid syntax 
[my_shell][email protected]:~/rbmq_test $ 

を実行したときに私にスローされるエラーは、コマンドは、それがシェル上で実行されたときに作業し、以下のフォーマットで出力

を生成していることに注意してください
line1 
line2 
line3 

誰かが助けてくれますか?コマンドのような

答えて

0

ルックは多分あなたはあなたが「名前」の周りに引用されている以下の

cmd = """ 
curl --silent -u username:password http://localhost:55672/api/queues | sed 's/,/\n/g' | grep '"name"\:' | tr -d "name:" | tr -d -d \" 
""" 
subprocess.check_output(cmd) 
+0

これは 'check_output()'呼び出しで 'shell = True'を必要とします。 – JohanL

+0

@Hamuelありがとうが、上記のコードは私の問題を解決しませんでした。 – bindo

0

を試すことができますが、エスケープする必要が禁じられた文字の多くを持って間違っているようです。

あなたは二重引用符で囲まれた文字列を閉じます。そのため、無効な構文が得られます。コマンド自体には何も関係ありません。

引用符の前にエスケープ文字を追加してみてください(name)。

subprocess.check_output("curl --silent -u username:passwordhttp://localhost:55672/api/queues | sed 's/,/\n/g' | grep \"name\":' | tr -d \"name:\" | tr -d -d \"", shell=True) 

または単一のものとの二重引用符を置き換える、あなたはコマンド文字列と競合しないこの方法は:あなたが最初の投稿をコマンドラインに基づいて

subprocess.check_output("curl --silent -u username:passwordhttp://localhost:55672/api/queues | sed 's/,/\n/g' | grep 'name':' | tr -d 'name:' | tr -d -d \"", shell=True) 

あなたが二重に必要と思われます

subprocess.check_output("curl --silent -u username:passwordhttp://localhost:55672/api/queues | sed 's/,/\n/g' | grep '\"name\"':' | tr -d 'name:' | tr -d -d \"", shell=True) 
+0

申し訳ありませんが、提案されたオプションでまだ運がありません。 :( – bindo

関連する問題