2016-09-15 12 views
0

私はPython 2.6.6を使用していますが、アップグレードできません。redisコマンドを呼び出すレスポンスを取得するには

私はsubprocess.check_outputでうまく動作しましたが、私たちがPython 2.6.6を使用していることを認識していませんでした。

私はこの試みた:

command = "redis-cli hget some_key some_field" 
command_output = subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0] 

をしかし、私は私が正しくコマンドに渡しています、ドキュメントはsomethign等を有していてとは思わない:

subprocess.Popen(['ls', 'li'], ..) 

答えて

1

うん、あなたが与えるためにリストを使用する必要がありますあなたのコマンドライン。モーセKoledoyeから関連

command = ["redis-cli", "hget", "some_key", "some_field"] 
command_output = subprocess.Popen(command, stdout=subprocess.PIPE).communicate()[0] 

command.split()

@リストへの変換を行います。

これらの理由は非常に簡単です。すべての引数は直接redis-cliプログラムに転送されます。さんが詳細に行こう:

は、あなたがこれを持って想像:|| echo "hacked by h4x0r"

key = raw_input("Please give me the key:") 
os.system('redis-cli bla bla %s' % key) # DON'T DO THIS AT HOME. 

今私は悪質な男、およびI入力、次のだと想像。最終的なコマンドは次のようになります:

redis-cli bla bla || echo "hacked by h4x0r" 

リストを使用してください。本当に。

+0

OPにあるように、 'command.split()'はリストへの変換を行います。言及する価値があるかもしれません。 –

+0

予期しない動作につながる可能性があるため、大きなファンではありません。しかし、はい、この場合言及する価値があります:) – FunkySayu

+0

command.split()は、 "1,2"、 "Hello World" '' ' –

関連する問題