如何通过终端或shell脚本从python文件调用特定函数,并将参数传递给该函数?

如何通过终端或shell脚本从python文件调用特定函数,并将参数传递给该函数?,python,linux,shell,Python,Linux,Shell,我在python文件中有三个函数。我希望通过shell脚本或终端从python文件调用特定函数,并将参数传递给该python函数。我有办法做到吗 我尝试了python-c“exec(open(filename.py).read());functionName()”,但我不知道如何传递参数 怎么跑,, python-c“导入a,sys;a.functionName(sys.argv[1])”“示例字符串” 来自shell脚本 #!/bin/bash import os def abracad

我在python文件中有三个函数。我希望通过shell脚本或终端从python文件调用特定函数,并将参数传递给该python函数。我有办法做到吗

我尝试了
python-c“exec(open(filename.py).read());functionName()”
,但我不知道如何传递参数

怎么跑,,
python-c“导入a,sys;a.functionName(sys.argv[1])”“示例字符串”
来自shell脚本


#!/bin/bash

import os

def abracadabra_personal(project):
    directory = "/srv/http/Personal/" + project
    try:
        if not os.path.exists(directory):
            os.makedirs(directory)
    except OSError:
        print("Error! Couldn't create project folder : " + directory)

def sample():
    print("Your argument was got.")

上面是我的python代码。下面是我的shell脚本


#!/bin/bash

# creates a personal project
function abracadabra_personal() {
    cd
    # python -c "import abracadabra, sys; abracadabra.sample(sys.argv[1])" $1
    python -c "print("hi")"
    echo $1
    cd /srv/http/Personal/
}

# creates an office project
function abracadabra_office() {
    cd
    python abracadabra.py $1
    cd /srv/http/Office/
}

# creates a learning project
function abracadabra_learning() {
    cd
    python abracadabra.py $1
    cd /srv/http/Learning/
}

# creates a freelance project
function abracadabra_freelance() {
    cd
    python abracadabra.py $1
    cd /srv/http/Freelance/
}


命令行参数在中提供

或者,在Python脚本中放入一个。然后您可以直接调用这个Python模块

$ cat b.py
def functionName(arg):
    print('my argument is {}'.format(arg))

if __name__ == '__main__':
    import sys
    functionName(sys.argv[1])
$ python -m b 'hello world'
my argument is hello world
如果在shell脚本中有shell变量,请记住在变量扩展周围使用双引号

argument='hello world'
…
python-m_python_模块“$argument”

您可以将文件视为一个模块:
python-c'导入文件名;filename.functionName()'
。参数是什么?参数是字符串。
python-c'import a,sys;a、 functionName(sys.argv[1])“hello world”
这是可行的,但当我将其放入shell脚本函数中时,它不会返回任何结果。我做错了吗?@DeepakSurya这看起来是对的,所以如果它不起作用,它一定在你代码的其他部分。嗨,我已经上传了全部源代码。你能检查一下吗?@DeepakSurya有什么问题吗?我想从shell脚本调用python函数。
$ cat b.py
def functionName(arg):
    print('my argument is {}'.format(arg))

if __name__ == '__main__':
    import sys
    functionName(sys.argv[1])
$ python -m b 'hello world'
my argument is hello world