2017-07-13 8 views
0

私は何を使用することが許可されているかにいくつかの制限があるため、配列をPHPで配列として作成しなければなりませんでした。スクリプトの最後に、return文を入れて辞書を返します。私は今このマップを使ってPythonでクラスタリングアルゴリズムを実行しなければなりません。私は走ろうとした。PHPで作成された辞書をPythonに戻すには?

proc = subprocess.call(["php", "/path/to/file/file.php"]) 

辞書をprocとして保存する。私は次に、procの型を出力し、データを正しく格納していれば値を得ましたが、型はintで、値は0でした。(この辞書のキーはすべて文字列で、整数の配列です値として)。 なぜ私はこれらの戻り値を取得しているのか?またはPython 2.7に私の辞書をインポートするより良い方法は?

ありがとうございます!

+5

... ..しかし、私はなぜあなたがこれをやっているのか、あるいはこれが良いアイデアなのかを理解していません。 –

+0

私はPHPに慣れていませんが、スクリプトは単に 'map'データ構造体を返すと思いますDを得るiscarded。 'subprocess.call'の戻り値は、プロセスの戻りコード、すなわち終了ステータスです。それは '0'です。 'サブプロセス'は、PHPのやり方を魔法のように知っているわけではなく、いくつかのPython互換フォーマットにシリアル化し、そのオブジェクトをPythonプロセスに返します。あなたはそれを自分で実装する必要があります。 @ JoranBeasleyが示唆しているように、JSONをシリアライズフォーマットとして使用してください。 –

答えて

2

私はこれは良いアイデアですsenarioを理解するために苦労し...しかし、あなただけの出力JSONできる関わらず

test.phpを

<?php 
$data = array("1"=>2,"3"=>5,"asd"=>22,"bob"=>"susan"); 
echo json_encode($data); 
?> 

パイソン

>>> import subprocess,json 
>>> json.loads(subprocess.check_output("php test.php",shell=True)) 
{u'1': 2, u'3': 5, u'bob': u'susan', u'asd': 22} 
関連する問題