SH ist ein einzigartiger Unterprozess-Wrapper, der Ihre Systemprogramme dynamisch Python-Funktionen zuordnet. SH hilft Ihnen beim Schreiben von Shell-Skripten in Python, das nicht nur alle Funktionen von Bash unterstützt (einfacher Befehlsaufruf, einfache Pipe-Übertragung), sondern auch die Flexibilität von Python berücksichtigt.
SH ist eine ausgereifte Unterprozessschnittstelle in Python, die es Ihnen ermöglicht, jedes Systemprogramm so aufzurufen, als wäre es eine Funktion. Das heißt, mit SH können Sie nahezu jeden Befehl aufrufen, der von einer Login-Shell aus ausgeführt werden kann.
Darüber hinaus können Sie die Ausgabe Ihrer Befehle einfacher erfassen und analysieren. 2. Verwendungsschritte Der Befehl kann dann wie eine Python-Funktion verwendet werden.
pip install sh
Aber „Es sollte beachtet werden, dass es sich hierbei nicht um echte Python-Funktionen handelt. Was sie tatsächlich ausführen, sind die entsprechenden Binärbefehle im System. Genau wie Bash werden sie dynamisch auf dem System ausgeführt, indem sie PATH analysieren.
Viele Programme haben ihre eigene Untergruppe von Befehlen, wie zum Beispiel git (branch, checkout).
sh verarbeitet Unterbefehle über den Attributzugriff.
# get interface information import sh print sh.ifconfig("eth0") from sh import ifconfig print ifconfig("eth0") # print the contents of this directory print ls("-l") # substitute the dash for an underscore for commands that have dashes in their names sh.google_chrome("http://google.com")
4. Schlüsselwortargumente
# 子命令 >>> from sh import git, sudo >>> print(git.branch("-v")) >>> print(git("branch", "-v")) >>> print(sudo.ls("/root")) >>> print(sudo("/bin/ls", "/root")) # with 环境 >>> with sh.contrib.sudo(_with=True): print(ls("/root")) # _with=True 关键字告诉命令它正处于 with 环境中, 以便可以正确地运行. #将多个参数传递给命令时,每个参数必须是一个单独的字符串: from sh import tar tar("cvf", "/tmp/test.tar", "/my/home/directory/") # 这将不起作用: from sh import tar tar("cvf /tmp/test.tar /my/home/directory")
5. Find-Befehl
„Which“ findet den vollständigen Pfad des Programms und gibt None zurück, wenn er nicht existiert. Dieser Befehl ist einer der wenigen, der tatsächlich als Python-Funktion implementiert ist und daher nicht auf einer tatsächlichen „which“-Binärdatei basiert.
from sh import git # resolves to "git branch -v" print(git.branch("-v")) print(git("branch", "-v")) # the same command
Es sind noch viele weitere Funktionen verfügbar und alle sind zu finden. in der offiziellen Dokumentation.
6.Backparameter
sh kann den Parameter „Backen“ als Befehl verwenden, der die entsprechende vollständige Befehlszeilenzeichenfolge ausgibt, wie im folgenden Code gezeigt:
# Resolves to "curl http://duckduckgo.com/ -o page.html --silent" sh.curl("http://duckduckgo.com/", o="page.html", silent=True) # If you prefer not to use keyword arguments, this does the same thing sh.curl("http://duckduckgo.com/", "-o", "page.html", "--silent") # Resolves to "adduser amoffat --system --shell=/bin/bash --no-create-home" sh.adduser("amoffat", system=True, shell="/bin/bash", no_create_home=True) # or sh.adduser("amoffat", "--system", "--shell", "/bin/bash", "--no-create-home")
print sh.which("python") # "/usr/bin/python" print sh.which("ls") # "/bin/ls" if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")
Jetzt kann „myserver“ aufgerufen werden, um einen Back-SSH-Befehl darzustellen:
# The idea here is that now every call to ls will have the “-la” arguments already specified. from sh import ls ls = ls.bake("-la") print(ls) # "/usr/bin/ls -la" # resolves to "ls -la /" print(ls("/"))
Das obige ist der detaillierte Inhalt vonSo verwenden Sie das Python-Shell-Skript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!