Run a Python script from another Python script, passing in arguments
Here's how you run another script with arguments using the subprocess
module:
Replace 'other_script.py'
with your script filename, and 'arg1'
, 'arg2'
with your actual arguments.
Choosing the right command-execution tool
Python offers several tools to execute commands and scripts. Among them, subprocess.run()
is handy for safe and cross-platform operations. But let's dive deeper into the toolbox:
subprocess.Popen()
for more control
Handling asynchronous operations or wanting greater control of the child process? subprocess.Popen()
is your friend:
subprocess.Popen()
lets you deal with non-blocking calls and dynamic interaction with spawned process's I/O streams.
Changing sys.argv
temporarily
Sometimes, you need to pretend you're on the command line. For this, you can temporary change sys.argv
:
This let's you simulate command line arguments without shelling out a new process.
Direct function calls
You remember PYTHONPATH, right? Use it to import functions between scripts for direct interaction:
Here, make sure main()
function in other_script.py
can handle your arguments.
Handling command-line arguments
Implement your argument parsing logic in other_script.py
:
Your other script now behaves just like a mini command line utility!
Advanced process control with subprocess.Popen()
Getting serious? Use subprocess.Popen()
for redirection, deadlock avoidance and running in a shell:
Note that spawned processes can be tricky to manage. But with great power comes great responsibility!
Was this article helpful?