The subprocess module provides some nice tools to control the details of running a process, but it's still rather awkward for common use cases where you want to execute a command in one go.
* There are three high-level functions: call, check_call and check_output, which all do very similar things with different return/raise behaviours
* Their naming is not very clear (check_output doesn't check the output, it checks the return code and captures the output)