While there are probably ways to do this within the python ecosystem such as watchdog/watchmedo ( https://github.com/gorakhargosh/watchdog ), and maybe even linux scripting options with inotifywait ( https://linux.die.net/man/1/inotifywait ), for me, the easiest solution by far was... to just use nodemon! What I didn't know is that although the github tagline of nodemon is "Monitor for any changes in your node.js application and automatically restart the server - perfect for development" actually nodemon is a delicously generic tool and knows that .py files should be executed with python for example. Here's where I think the magic happens: https://github.com/remy/nodemon/blob/c1211876113732cbff78eb1ae10483eaaf77e5cf/lib/config/defaults.js
End result is that the command line below totally works. Yay!
You actually can use nodemon with python, from their docs:
Running non-node scripts nodemon can also be used to execute and
monitor other programs. nodemon will read the file extension of the
script being run and monitor that extension instead of .js if there's
no nodemon.json:
nodemon --exec "python -v" ./app.py
Now nodemon will run app.py with python in verbose mode (note that if
you're not passing args to the exec program, you don't need the
quotes), and look for new or modified files with the .py extension.