2010-01-22 145 views
10

我有一个“报警邮件”函数在python模块内。我希望能够从bash脚本中调用这个函数。我知道你可以在脚本中使用'python'来调用一个模块,但是如果你可以或者如何在模块中调用一个特定的函数,我不会。因为你需要从bash脚本调用python函数

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

修改:

回答

27
python -c'import themodule; themodule.thefunction("boo!")' 
+1

如果您想将字符串传递给python函数,该怎么办?或者只是打印你好? 'python -c'print(“hello”)''不起作用。 – mango 2014-07-02 18:52:54

+1

@mango - 错误 - 参数工作。事实上,我复制并粘贴了您的示例,然后使用'python3'和'python2'再次进行测试。您可能会遇到不同的问题。 – 2015-02-06 18:18:51

+0

如果python模块在另一个目录下怎么办? – Chaos 2015-08-21 03:38:34

13

可以使用-c选项。

2

要调用特定功能的模块,确保该模块具有以下:

if __name__ == "__main__": 
    the_function_to_call() 

然后,你可以简单地做这在你的shell脚本。

python module.py 

或者

python -m module 

根据对PYTHONPATH模块的与否。

+0

这只会工作,如果你还没有一个主或已经有一个主指向你需要的功能。在我的情况下,已经有一个main,它指向模块中的另一个函数,所以这不是一个选项。 – Daniel 2010-01-22 21:32:23

+0

@Daniel:这不是一个限制,这就是你的设计。如果你已经有了一个'main'并且做了错误的事情,那么你设计它是错误的。 – 2010-01-24 13:42:39

+1

@ S.Lott:没有设计错误。该方法本身完全是它需要做的。这是一个限制,因为它的一个模块不是一个类,这意味着它是一组类似的功能。通常被称为的要点,但在这种情况下,我需要从一个非典型的函数开始直接调用。 – Daniel 2010-01-25 16:40:21