Basically, you're tripping over this warning from the Python manual:
Warning: Use communicate() rather than stdin.write(), stdout.read() or stderr.read() to avoid deadlocks due to any of the other OS pipe buffers filling up and blocking the child process.
...though I also noticed that you were making a couple of other mistakes in your use of subprocess:
Warning: Passing shell=True can be a security hazard if combined with untrusted input. See the warning under Frequently Used Arguments for details.
Note that on Windows, you cannot set close_fds to true and also redirect the standard handles by setting stdin, stdout or stderr.
I have a fix (plus some code cleanups) ready to submit but, with no license specified, I'm wary of submitting a pull request where the world can see and use my changes.
Basically, you're tripping over this warning from the Python manual:
...though I also noticed that you were making a couple of other mistakes in your use of subprocess:
I have a fix (plus some code cleanups) ready to submit but, with no license specified, I'm wary of submitting a pull request where the world can see and use my changes.