With these it helps Removing the pipes is what worked for my scenario. Now, I get all the output from the remote machines on the machine I start the test from and everything closes out gracefully. By the way, I figured out that shell=False is false by default so it's unnecessary and so is the %s % host string substitution. Here is what it would look like pertaining to my exact question:
wish help you to fix your issue One major difference between the two is that communicate() closes stdin after sending the data. I don't know about your particular case, but in many cases this means that if a process is awaiting the end of the user input, he will get it when communicate() is used, and will never get it when the code blocks on read() or readline(). Try adding Popen.stdin.close() first and see if it affects your case.
Where does subprocess.Popen look for the argument process? (Python)
it fixes the issue To run the grep 3 command you need the output from the previous command, so there is no way to run this successfully in a single command with subprocess.Popen. If you always want to run grep 3 for all the files, you could just join the results of all the gunzip -c file_x.gz and then run the grep command only once on the entire list.
I hope this helps you . Your commands are failing because they contain backslashes, which have a special meaning in Python string literals. In particular, the "\\" at the start of your network paths is getting turned into a single "\", making them no longer a network path (this substitution is visible in the error message on the last line of your pasted text). You can either double all the backslashes to escape them (which quickly gets unreadable in cases like this), or put an "r" in front of the string literal to make it a "raw string" which doesn't specially interpret backslashes. For example: os.popen(r'net use J: \\Purushoth-pc\d\Materials').read()
How to end the sub process when using subprocess.Popen with python?