Skip to content
Advertisement

Python subprocess and user interaction

I’m working on a GUI front end in Python 2.6 and usually it’s fairly simple: you use subprocess.call() or subprocess.Popen() to issue the command and wait for it to finish or react to an error. What do you do if you have a program that stops and waits for user interaction? For example, the program might stop and ask the user for an ID and password or how to handle an error?

JavaScript

So far everything I’ve read tells you how to read all output from a program only after it’s finished, not how to deal with output while the program is still running. I can’t install new modules (this is for a LiveCD) and I’ll be dealing with user input more than once.

Advertisement

Answer

Check out the subprocess manual. You have options with subprocess to be able to redirect the stdin, stdout, and stderr of the process you’re calling to your own.

JavaScript

You can also interact with a process line by line. Given this as prog.py:

JavaScript

You can interact with it line by line via:

JavaScript

EDIT: In python3, it needs to be 'mike'.encode().

User contributions licensed under: CC BY-SA
4 People found this is helpful
Advertisement