I often run shell commands in Python via the subprocess.run
command.
One thing that has always bugged me is that this required you to split commands into a list before it’d work properly.
For example, you’d have to do:
import subprocess
import shlex
subprocess.run(*shlex.split("ls -l"))
Today I discovered that you don’t have to do this!
There’s a shell=
keyword that can be used to tell subprocess to simply run the command directly in the shell.
For example:
import subprocess
subprocess.run("ls -l", shell=True)
Apparently there are some security considerations but this seems like a big papercut saver to me.