Search code examples
pythonbashargumentssubprocesspopen

Python: subprocess and running a bash script with multiple arguments


How do I go about running a bash script using the subprocess module, to which I must give several arguments?

This is what I'm currently using:

subprocess.Popen(['/my/file/path/programname.sh', 'arg1 arg2 %s' % arg3], \
    shell = True)

The bash script seems not to be taking any of the parameters in. Any insights are greatly appreciated!


Solution

  • Pass arguments as a list, see the very first code example in the docs:

    import subprocess
    
    subprocess.check_call(['/my/file/path/programname.sh', 'arg1', 'arg2', arg3])
    

    If arg3 is not a string; convert it to string before passing to check_call(): arg3 = str(arg3).