Calling a python function from bash script

Question:

I have an “alarm email” function inside a python module. I want to be able to call this function from a bash script. I know you can call a module using ‘python ‘ in the script, but I’m not if you can or how you would call a specific function within the module.

Asked By: Daniel

||

Answers:

You can use the -c option:

python -c "import random; print random.uniform(0, 1)"

Modify as you need.

Answered By: carl
python -c'import themodule; themodule.thefunction("boo!")'
Answered By: Alex Martelli

To call a specific function in a module, assure that the module has the following:

if __name__ == "__main__":
    the_function_to_call( )

Then you can simply do this in your shell script.

python module.py

Or

python -m module

Depending on whether or not the module’s on the PYTHONPATH.

Answered By: S.Lott

To supplements others’ answers with two notes:

  1. If you need to feed environment variables as parameters, use double quotes;
  2. The parameters are not necessarily str.

Here is an example:

# test.py
def call(param):
    print(f'{param} with type={type(param)}')

print('hi')

Execute from shell:

PARAM=10
python3 -c "import test; test.call(${PARAM})"

You can read:

hi
10 with type=<class 'int'>
Answered By: Tengerye
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.