How to send a var to stdin of an external software
Benjamin Watine
watine at cines.fr
Mon Mar 17 09:19:10 EDT 2008
bryanjugglercryptographer at yahoo.com a écrit :
> I wrote:
>> And here's a thread example, based on Benjamin's code:
> [...]
>
> Doh! Race condition. Make that:
>
> import subprocess
> import thread
> import Queue
>
> def readtoq(pipe, q):
> q.put(pipe.read())
>
> cat = subprocess.Popen('cat', shell=True, stdin=subprocess.PIPE,
> stdout=subprocess.PIPE)
>
> myVar = str(range(1000000)) # arbitrary test data.
>
> q = Queue.Queue()
> thread.start_new_thread(readtoq, (cat.stdout, q))
> cat.stdin.write(myVar)
> cat.stdin.close()
> cat.wait()
> myNewVar = q.get()
>
> assert myNewVar == myVar
> print len(myNewVar), "bytes piped around."
>
>
> --
> --Bryan
>
Great, it works, thank you Bryan !
Could you explain me why you use a queue instead of a simple array for
getting the piped var ?
Regards,
Ben
More information about the Python-list
mailing list