Führen Sie die Funktion aus dem command line
Habe ich diesen code:
def hello():
return 'Hi :)'
Wie würde ich dieses direkt von der Kommandozeile aus?
- Wahrscheinlich meintest du
print "Hi :)"
stattreturn 'Hi :)'
.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mit der
-c
(Befehl) argument (vorausgesetzt, deine Datei heißtfoo.py
):Alternativ, wenn Sie don ' T care about namespace-Verschmutzung:
- Und Mittelgrund:
$python -c "import foo;foo.hello()"
Setzen Sie einfach
hello()
irgendwo unterhalb der Funktion, und es wird ausgeführt, wenn Sie tunpython your_file.py
Für eine rasche und reibungslose Lösung, die Sie verwenden können, dieses:
Diese Weise wird die Funktion nur ausgeführt werden, wenn Sie die Datei ausführen, aber nicht, wenn Sie die Datei importieren.
hello()
nimmt die Argumente, die geliefert werden, sollten von der Kommandozeile?sys.argv
für die Methode. Oder greifen Sie von der Hallo-Methodehello()
) und führen Sie es von der Kommandozeile aus?sys.argv
parsing (mitargparse
zum Beispiel) zum ausführen von verschiedenen Methoden.python -c 'from myfile import hello; hello()'
womyfile
muss ersetzt werden durch den Basisnamen Ihres Python-Skript. (E. g.,myfile.py
wirdmyfile
).Jedoch, wenn
hello()
ist Ihre "permanente" main entry point in Ihrem Python-Skript, dann ist der übliche Weg, dies zu tun ist wie folgt:Dadurch können Sie das Skript ausführen, einfach durch ausführen
python myfile.py
oderpython -m myfile
.Manche Erklärung hier:
__name__
ist eine spezielle Python-variable, enthält den Namen des Moduls, das gerade ausgeführt wird, außer, wenn das Modul von der Kommandozeile gestartet, in welchem Fall es wird"__main__"
.python -m foo -c 'foo.bar()'
undpython -c 'import foo; foo.bar()'
? Ich ein anderes Verhalten, wo es scheint, das -c-argument wird ignoriert im ersten Fall.Schrieb ich einen kleinen Python-Skript aufrufbar aus einer bash-Kommandozeile. Es trägt den Namen des Moduls, der Klasse und der Methode, die Sie aufrufen möchten, und die Parameter, die Sie übergeben möchten. Ich nenne es PyRun und Links von der .py-Erweiterung und machte es ausführbar mit chmod +x PyRun, so dass ich nenne es einfach schnell gehen:
Speichern Sie diese in einer Datei namens PyRun
Hier ist ein sample-Modul, um zu zeigen, wie es funktioniert. Diese ist gespeichert in einer Datei namens PyTest.py:
Versuchen Sie diese Beispiele:
Hinweis: das Letzte Beispiel von Flucht vor den Klammern zu übergeben, in der ein Tupel als parameter nur mit der Zweiten Methode.
Wenn Sie zu wenige Parameter für das, was die Methode Bedarf erhalten Sie eine Fehlermeldung. Wenn Sie zu viele, es ignoriert die extras. Müssen Sie das Modul in der aktuellen Arbeits-Ordner legen Sie PyRun können überall in Ihrem Pfad.
fügen Sie dieses snippet an der Unterseite des Skripts
Können Sie nun Ihre Funktion durch ausführen
Diese funktioniert, weil Sie auf der Durchreise sind die command-line-argument (ein string von der Funktion-name), in
locals
, ein Wörterbuch mit einem aktuellen lokalen Symboltabelle. Die Klammern am Ende wird die Funktion aufgerufen werden.update: wenn Sie möchten, dass die Funktion akzeptiert einen parameter aus der Befehlszeile, die Sie übergeben können
sys.argv[2]
wie diese:Diese Weise ausgeführt
python myscript.py myfunction "hello"
Ausgabehello
.myfunction(12)
Wenn Sie installieren Sie die runp-Paket mit
pip install runp
das ist eine Frage der Ausführung:runp myfile.py hello
Finden Sie das repository an: https://github.com/vascop/runp
Interessanterweise genug, wenn das Ziel war, Druck auf die Kommandozeilen-Konsole oder führen Sie einige andere minute python-Betrieb Sie können über die Pipeline-input in den python-interpreter etwa so:
sowie pipe-Dateien..
*Beachten Sie, dass die Erweiterung nicht zu haben ist .py für das zweite arbeiten.
**Beachten Sie auch, dass für die bash, die Sie möglicherweise benötigen, um zu entkommen die Charaktere
echo import foo;foo.hello() | python
echo 'print("hi:)")' | python
Lasst uns dies ein wenig leichter auf uns selbst und nur ein Modul verwenden...
Versuchen:
pip install compago
Dann schreiben:
Dann benutzen, etwa so:
Hinweis: Es gibt eine bug in Python 3 im moment, aber funktioniert Super mit Python 2.
Edit: Eine noch bessere option, meiner Meinung nach ist das Modul Feuer von Google, die es einfach macht auch pass-Funktion Argumente. Es ist installiert mit
pip install fire
. Von Ihren GitHub:Hier ist ein einfaches Beispiel.
Dann, von der Kommandozeile aus ausführen können:
Hatte ich eine Anforderung der Verwendung verschiedener python-Werkzeuge (Auswahl, string, etc.) auf der Kommandozeile und geschrieben hatte, das Werkzeug pyfunc speziell für, die. Sie können es verwenden, um zu bereichern, die Sie zur Verwendung der Befehlszeile Erfahrung:
Es ist immer eine Möglichkeit zur Eingabe von python auf der Kommandozeile mit dem Befehl python
dann importieren Sie Ihre Datei, so import example_file
dann führen Sie den Befehl mit example_file.Hallo()
Dies vermeidet das seltsam .pyc-copy-Funktion, die Pflanzen jedes mal, wenn Sie ausführen, python -c etc.
Vielleicht nicht so praktisch wie ein single-Befehl, aber eine gute schnelle Lösung, um text-Datei von der Befehlszeile aus, und ermöglicht die Verwendung von python-aufrufen und ausführen der Datei.
Etwas wie dieses:
call_from_terminal.py
Dies funktioniert in der bash.
Unten ist die Odd_Even_function.py Datei, in der die definition der Funktion.
Nun rufen die gleichen von der Eingabeaufforderung unten sind die Optionen, die für mich gearbeitet.
Optionen 1
Vollständigen Pfad des exe\python.exe -c
"import Odd_Even_function; Odd_Even_function.OE(100)"
Option 2
Vollständigen Pfad des exe\python.exe -c
"aus Odd_Even_function import OE; OE(100)"
Dank.
Diese Funktion kann nicht von der Befehlszeile aus ausgeführt, da gibt es einen Wert, welcher unhanded. Sie können entfernen Sie die Rückkehr und verwenden Sie Druck-statt
Verwenden Sie die python-c tool (pip install python-c) und dann einfach schreiben:
oder im Falle Sie haben keine Funktion name-clashes in Ihrem python-Dateien:
Zuerst müssen Sie die Funktion aufrufen, wie Sie Ihnen gesagt, oder die founction wird nichts angezeigt in der Ausgabe, danach speichern Sie die Datei und kopieren Sie den Pfad der Datei per Rechtsklick auf den Ordner oder die Datei und klicken Sie auf"Datei kopieren", dann gehen Sie zum terminal und Schreibe:
- cd "der Pfad der Datei"
- python "name der Datei (z.B. main.py)"
nach, dass es zeigt die Ausgabe des Codes.