Consider this at the windows commandline.
scriptA.py | scriptB.py
I want to send a dictionary object from scriptA.py to scriptB.py by pickle:ing it and sending it over a pipe. But I don't know how to accomplish this.
I've read some posts about this subject here, but usually there's answers along these line:
Popen( "scriptA.py"´, ..., and so on )
But I don't actually know the name of "scriptA.py". I just want to get hold of the ready pipe object and send/receive the databuffer.
I've tried sys.stdout/stdout, but I get file-descriptor errors and basically haven't tried that track very far.
The process is simple:
scriptA.py:
scriptB.py
When you say this to a shell
scriptA.py | scriptB.py
The shell connects them with a pipe. You do NOTHING and it works perfectly.
Everything that scriptA.py writes to sys.stdout goes to scriptB.py
Everything that scriptB.py reads from sys.stdin came from scriptA.py
They're already connected.
So, how do you pass a dictionary from stdout in A to stdin in B?
Pickle. scriptA.py dumps the dictionary to stdout. scriptB.py loads the dictionary from stdin.
JSON. scriptA.py dumps the dictionary to stdout. scriptB.py loads the dictionary from stdin.
This is already built-in to Python and takes very, very little code.
In scriptA, json.dump( {}, sys.stdout ) or pickle.dump( {}, sys.stdout )
In scriptB, json.load( sys.stdin ) or pickle.load( sys.stdin )
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With