Mam ten kod:
def hello():
return 'Hi :)'
Jak miałbym to uruchomić bezpośrednio z wiersza poleceń?
python
function
command-line
Steven
źródło
źródło
print "Hi :)"
zamiastreturn 'Hi :)'
.Odpowiedzi:
Za pomocą argumentu
-c
(polecenie) (zakładając, że plik ma nazwęfoo.py
):Alternatywnie, jeśli nie obchodzi Cię zanieczyszczenie przestrzeni nazw:
I środek:
źródło
$python -c "import foo;foo.hello()"
print foo.hello()
przezprint(foo.hello())
nie. Nie mam wiedzy pythonowej, aby wyjaśnić, dlaczego tak jest, więc jeśli ktoś inny mógłby wyjaśnić, co się dzieje, byłoby to bardzo mile widzianePo prostu umieść
hello()
gdzieś poniżej funkcji, a wykona się, gdy to zrobiszpython your_file.py
Aby uzyskać fajniejsze rozwiązanie, możesz użyć tego:
W ten sposób funkcja zostanie uruchomiona tylko po uruchomieniu pliku, a nie po zaimportowaniu pliku.
źródło
hello()
pobierze argumenty, które powinny być dostarczone z wiersza poleceń?sys.argv
do metody. Lub skorzystaj z metody hellohello()
) i uruchomić ją z wiersza poleceń?python -c 'from myfile import hello; hello()'
gdziemyfile
należy zastąpić bazame skryptu Python. (Np.myfile.py
Staje sięmyfile
).Jeśli jednak
hello()
jest to „stały” główny punkt wejścia w skrypcie w języku Python, zwykły sposób na zrobienie tego jest następujący:Pozwala to na wykonanie skryptu po prostu przez uruchomienie
python myfile.py
lubpython -m myfile
.Oto niektóre wyjaśnienia:
__name__
jest to specjalna zmienna Pythona, która przechowuje nazwę aktualnie wykonywanego modułu, z wyjątkiem sytuacji, gdy moduł jest uruchamiany z wiersza poleceń, w którym to przypadku staje się"__main__"
.źródło
python -m foo -c 'foo.bar()'
ipython -c 'import foo; foo.bar()'
? Dostaję inne zachowanie, w którym wydaje się, że argument -c jest ignorowany w pierwszym przypadku.Napisałem szybki skrypt w języku Python, który można wywołać z linii poleceń bash. Pobiera nazwę modułu, klasy i metody, którą chcesz wywołać, oraz parametry, które chcesz przekazać. Nazywam go PyRun, zrezygnowałem z rozszerzenia .py i sprawiłem, że jest wykonywalny za pomocą chmod + x PyRun, dzięki czemu mogę po prostu wywołać go szybko w następujący sposób:
Zapisz to w pliku o nazwie PyRun
Oto przykładowy moduł pokazujący, jak to działa. Jest to zapisywane w pliku o nazwie PyTest.py:
Spróbuj uruchomić następujące przykłady:
Zwróć uwagę na ostatni przykład ucieczki z nawiasów, aby przekazać krotkę jako jedyny parametr do drugiej metody.
Jeśli przekażesz za mało parametrów dla potrzebnej metody, pojawi się błąd. Jeśli zdasz zbyt wiele, ignoruje dodatki. Moduł musi znajdować się w bieżącym folderze roboczym, umieścić PyRun może być w dowolnym miejscu na ścieżce.
źródło
dodaj ten fragment kodu na dole skryptu
Możesz teraz wywołać swoją funkcję, uruchamiając
Działa to, ponieważ przekazujesz argument wiersza poleceń (ciąg nazwy funkcji) do
locals
słownika z bieżącą lokalną tablicą symboli. Nawiasy na końcu spowodują wywołanie funkcji.aktualizacja: jeśli chcesz, aby funkcja akceptowała parametr z wiersza poleceń, możesz przekazać w
sys.argv[2]
następujący sposób:W ten sposób uruchomione
python myscript.py myfunction "hello"
zostanie wyjściehello
.źródło
myfunction(12)
Ułatwmy to sobie i po prostu skorzystaj z modułu ...
Próbować:
pip install compago
Następnie napisz:
Następnie użyj tak:
Uwaga: w tej chwili jest błąd w Pythonie 3, ale działa świetnie z Pythonem 2.
Edycja: Jeszcze lepszą opcją, moim zdaniem, jest moduł uruchamiany przez Google, który ułatwia przekazywanie argumentów funkcji. Jest instalowany z
pip install fire
. Z ich GitHub:Oto prosty przykład.
Następnie z wiersza poleceń możesz uruchomić:
źródło
python -m fire file_name method_name
. Ma również wbudowany argparser.Co ciekawe, jeśli celem było wydrukowanie na konsoli wiersza poleceń lub wykonanie innej drobnej operacji w języku Python, możesz przesłać dane wejściowe do interpretera języka Python w następujący sposób:
a także pliki potoków ..
* Pamiętaj, że rozszerzenie nie musi być .py, aby sekunda zadziałała. ** Pamiętaj też, że w przypadku bashu może być konieczne ucieczka postaci
źródło
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Jeśli zainstalujesz pakiet runp,
pip install runp
to kwestia uruchomienia:runp myfile.py hello
Repozytorium można znaleźć na stronie : https://github.com/vascop/runp
źródło
Miałem wymóg używania różnych narzędzi Pythona (zakres, ciąg itp.) W wierszu poleceń i specjalnie dla tego napisałem narzędzie pyfunc . Możesz go użyć, aby wzbogacić korzystanie z wiersza poleceń:
źródło
Zawsze można wpisać python w wierszu poleceń za pomocą polecenia python
następnie zaimportuj plik, więc zaimportuj plik_przykładowy
następnie uruchom polecenie za pomocą example_file.hello ()
Pozwala to uniknąć dziwnej funkcji kopiowania .pyc, która pojawia się przy każdym uruchomieniu Pythona -c itp.
Może nie tak wygodne jak pojedyncze polecenie, ale dobra szybka poprawka na tekst pliku z wiersza poleceń i pozwala używać Pythona do wywoływania i wykonywania pliku.
źródło
Coś takiego: call_from_terminal.py
To działa w trybie bash.
źródło
Poniżej znajduje się plik Odd_Even_function.py, który ma definicję funkcji.
Teraz, aby zadzwonić tak samo z wiersza polecenia poniżej, sprawdziłem opcje.
Opcje 1 Pełna ścieżka do pliku exe \ python.exe -c „import Odd_Even_function; Odd_Even_function.OE (100)”
Opcja 2 Pełna ścieżka do pliku exe \ python.exe -c "z funkcji Odd_Even_function import OE; OE (100)"
Dzięki.
źródło
Ta funkcja nie może być uruchomiona z wiersza poleceń, ponieważ zwraca wartość, która nie będzie obsługiwana. Możesz usunąć zwrot i zamiast tego użyć print
źródło
Użyj narzędzia python-c ( pip install python-c ), a następnie po prostu napisz:
lub w przypadku braku konfliktów nazw funkcji w plikach Pythona:
źródło
Najpierw musisz wywołać funkcję, tak jak ci powiedzieli, w przeciwnym razie nic nie wyświetli wyniku, następnie zapisz plik i skopiuj ścieżkę pliku, klikając prawym przyciskiem myszy na folder pliku, a następnie „kopiuj plik”, a następnie przejdź do terminala i napisz: - cd „ścieżka do pliku” - python „nazwa pliku na przykład (main.py)”, po czym wyświetli wyjście twojego kodu.
źródło
Ułatw sobie życie, zainstaluj Spyder. Otwórz plik, a następnie uruchom go (kliknij zieloną strzałkę). Następnie twoja
hello()
metoda jest zdefiniowana i znana Konsoli IPython, więc możesz wywoływać ją z konsoli.źródło