2010-01-22 129 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