I have my other issues with it as a systems language that are more idiosyncratic, but for replacing bash, process management is just way too much hassle.
http://www.oilshell.org/blog/2018/01/28.html#shouldnt-script...
However I like this lots:
subprocess.call(['cmd','with','precise','args',file1])Biggest mistake people do is bringing bash idioms into python, like trying to pipe the output through head/cut/tail/grep/sed instead of just using string operators like endswith/in/startswith/re. If you do that then process managment will be more verbose, but it is in bash also unless you ignore decent error handling like $PIPEFAIL[0] which many many scripts actually do unknowingly. For those other 0.1% of the places where you actually need a pipe then just accept that you have to write 4 lines instead of 2, you will save thousands of lines in other places. For parallel running processes &, jobs, nohup and wait in bash isn't exactly convenient either if you are interested in the results, so there it's a tie vs POpen if i'm being generous.
If I am thinking of using advanced features of bash, or I'm over-using grep/sed/awk within the script.... switch to python (formerly perl)
Mostly it's a win with respect to quoting, path manipulation and proper data structures.