You typically use subprocess.call when you do not care about the ouptut of the shell command and you just want it to run. If you need to capture the output of a command, then you will want to use subprocess.Popen. There is another sizable difference between subprocess.call and subprocess.Popen. Subprocess.call will block waiting for a response, while subprocess.Popen will not.