SH ialah pembungkus subproses unik yang boleh memetakan program sistem anda secara dinamik kepada fungsi Python. SH membantu anda menulis skrip Shell dalam Python, yang bukan sahaja menyokong semua fungsi Bash (seruan perintah mudah, penghantaran paip mudah), tetapi juga mengambil kira fleksibiliti Python.
SH ialah antara muka subproses matang dalam Python yang membolehkan anda memanggil sebarang program sistem seolah-olah ia adalah satu fungsi. Iaitu, SH membolehkan anda menggunakan hampir semua arahan yang boleh dijalankan daripada shell log masuk.
Apatah lagi, anda boleh menangkap dan menghuraikan output arahan anda dengan lebih mudah.
Pasang sh melalui arahan pip
pip install sh
Sebagai contoh, lulus parameter, tangkap output dan gunakan output dalam python. Lihat contoh kod di bawah untuk butiran. Dua cara untuk menulis subperintah
# 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")
# 子命令 >>> 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")
3.
Disebabkan ini, Python mempunyai sokongan yang sangat baik untuk arahan Shell, dan semua arahan pada sistem boleh dijalankan dengan mudah melalui Python ”
Banyak program mempunyai subset arahan mereka sendiri, seperti git (cawangan. , semak).
sh mengendalikan subperintah melalui akses atribut.
from sh import git # resolves to "git branch -v" print(git.branch("-v")) print(git("branch", "-v")) # the same command
4. Argumen Kata Kunci
Argumen kata kunci juga berfungsi seperti yang anda jangkakan: ia digantikan dengan pilihan argumen baris arahan.
# 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")
"Yang" mencari laluan penuh program dan mengembalikan Tiada jika ia tidak wujud. Perintah ini adalah salah satu daripada beberapa yang sebenarnya dilaksanakan sebagai fungsi Python, dan oleh itu tidak bergantung pada binari "yang" sebenar.
print sh.which("python") # "/usr/bin/python" print sh.which("ls") # "/bin/ls" if not sh.which("supervisorctl"): sh.apt_get("install", "supervisor", "-y")
6. Parameter penaik
sh boleh menggunakan parameter "baking" sebagai arahan, iaitu untuk mengeluarkan rentetan baris arahan lengkap yang sepadan, seperti yang ditunjukkan dalam kod berikut:
# 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("/"))
Memanggil "bake" pada arahan akan mencipta objek boleh panggil yang secara automatik akan melepasi semua parameter yang dihantar kepada "bake". # Without baking, calling uptime on a server would be a lot to type out:
serverX = ssh("myserver.com", "-p 1393", "whoami")
# To bake the common parameters into the ssh command
myserver = sh.ssh.bake("myserver.com", p=1393)
print(myserver) # "/usr/bin/ssh myserver.com -p 1393"
# resolves to "/usr/bin/ssh myserver.com -p 1393 tail /var/log/dumb_daemon.log -n 100" print(myserver.tail("/var/log/dumb_daemon.log", n=100)) # check the uptime print myserver.uptime() 15:09:03 up 61 days, 22:56, 0 users, load average: 0.12, 0.13, 0.05
Atas ialah kandungan terperinci Cara menggunakan skrip shell Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!