Mam funkcję "wiadomości e-mail z alarmem" wewnątrz modułu Pythona. Chcę móc wywoływać tę funkcję ze skryptu bash. Wiem, że możesz wywołać moduł za pomocą "pythona" w skrypcie, ale nie jestem, jeśli możesz i jak nazwałbyś określoną funkcję w module.Wywołanie funkcji Pythona ze skryptu bash
Odpowiedz
python -c'import themodule; themodule.thefunction("boo!")'
Można użyć opcji -c
:
python -c "import random; print random.uniform(0, 1)"
Modyfikuj, jak trzeba.
Aby wywołać określoną funkcję w module, zapewniam, że moduł ma następujący:
if __name__ == "__main__":
the_function_to_call()
Następnie można po prostu zrobić to w skrypcie powłoki.
python module.py
Albo
python -m module
W zależności od tego, czy modułu na PYTHONPATH
.
To działałoby tylko wtedy, gdy nie masz jeszcze głównej lub już głównej, która wskazywała na potrzebną funkcję. W moim przypadku istnieje już główna i wskazuje na inną funkcję w module, więc nie było to możliwe. – Daniel
@Daniel: To nie jest ograniczenie, tak właśnie wyglądają twoje rzeczy. Jeśli masz już 'main' i robi źle, źle to zaprojektowałeś. –
@ S.Lott: To nie jest źle zaprojektowane. Metoda sama w sobie robi dokładnie to, co musi. Jest to ograniczenie, ponieważ jego moduł nie jest klasą, co oznacza, że jest grupą podobnych funkcji. Główne punkty tego, który jest zwykle nazywany, ale w tym przypadku muszę zacząć od nietypowej funkcji, a więc bezpośredniego połączenia. – Daniel
co jeśli chcesz przekazać ciąg znaków do funkcji Pythona? lub po prostu wydrukować "cześć"? 'python -c 'print (" hello ")" 'nie działa. – mango
@mango - Niepoprawnie - argumenty działają. W rzeczywistości skopiowałem i wkleiłem twój przykład, a następnie przetestowałem ponownie używając "python3" i "python2". Możesz mieć inny problem. –
Co zrobić, jeśli moduł Pythona znajduje się w innym katalogu? – Chaos