使用パイプの通信データの間に匿名のpythonスクリプト
質問
このwindowsのコマンドライン.
scriptA.py | scriptB.py
送信したい辞書オブジェクトからscriptA.py へscriptB.py による漬け:グで送信でパイプです。がかかります。
を読んであんこのことが通常であ答えに沿ってこれらの線:
Popen( "scriptA.py"´, ..., and so on )
もしっかり身につけるた実際にその名を知られるの"scriptA.py".ていただきたいと思い手のパイプオブジェクトの送信/受信を、databuffer.
たってからはsys.標準出力に出力/標準出力に出力で取得しますファイル記述子の誤差は基本的にいたるトラックはもうここまで来ました。
この処理をシンプルです:
scriptA.py:
- (1)漬け/Serialize辞書へのstringbuffer
- (2)送stringbuffer間パイプ
scriptB.py
- (3)受stringbufferからパイプ
- (4)Unpickle/直列化復元stringbufferに辞書
解決
という時にはこれをシェル
scriptA.py | scriptB.py
シェルの結していパイプです。いんです。
すべる scriptA.py
書き込みますsys.標準出力に出力が scriptB.py
すべる scriptB.py
を読み込みからはsys.stdinから scriptA.py
彼らはすでに接続します。
ですから辞書を標準出力に出力ですstdinる。
漬け.
scriptA.py
石堆積場の辞書を標準出力に出力します。scriptB.py
負荷の辞書からstdin.JSON.
scriptA.py
石堆積場の辞書を標準出力に出力します。scriptB.py
負荷の辞書からstdin.
これが埋め込まれているPythonのか、少しのコードです。
にscriptA, json.dump( {}, sys.stdout )
または pickle.dump( {}, sys.stdout )
にscriptB, json.load( sys.stdin )
または pickle.load( sys.stdin )
他のヒント
管がちょうどBのSTDINへの標準出力を置く。
A行います:
import sys
sys.stdout.writelines(output)
Bだけで行います:
import sys
input = sys.stdin.readlines()
あなたが何かをパイピングしているとき、あなたは(一般的に)別の標準入力にあるプログラムの標準出力を供給しています。私はあなたがこのパスをしようとしておくべきだと思います。
問題が発生した場合、だけ<のhref = "https://stackoverflow.com/questions/965210/python-simple-reading-linesをチェックアウトし、2番目にあなたの最初のスクリプトの出力を読むことができること-from-パイプ ">この質問でます。