网站建设流程公司,怎么利用国外网站做互联网挣钱,wordpress安装中文出现英文,做网站的公司怎么拓展业务文章目录 前言一、sh是什么#xff1f;二、使用步骤1.安装2.使用示例3.使用sh执行命令4.关键字参数5.查找命令6.Baking参数 前言
本文章向大家介绍[Python库]分析一个python库–sh#xff08;系统调用#xff09;#xff0c;主要内容包括其使用实例、应用技巧、基本知识点… 文章目录 前言一、sh是什么二、使用步骤1.安装2.使用示例3.使用sh执行命令4.关键字参数5.查找命令6.Baking参数 前言
本文章向大家介绍[Python库]分析一个python库–sh系统调用主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项具有一定的参考价值需要的朋友可以参考一下。 一、sh是什么
SH是一个独特的子进程包装器可将您的系统程序动态映射到Python函数。SH帮助您用Python编写Shell脚本 既能支持Bash的所有功能(简单的命令调用简单的管道传输) 又能兼顾Python的灵活性。 [资源]
SH是Python中成熟的子进程接口允许您调用任何系统程序就好像它是一个函数一样。也就是说SH让您几乎可以调用任何可以从登录shell运行的命令。 更重要的是您可以更轻松地捕获和解析命令的输出。
二、使用步骤
1.安装
通过pip命令来安装sh pip install sh 2.使用示例
启动和运行的最简单方法是直接导入sh或从sh导入您需要的命令。然后该命令就可以像Python函数一样使用。 比如传递参数捕获输出并在python中使用输出。详见下面的代码示例
# 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, sudoprint(git.branch(-v))print(git(branch, -v))print(sudo.ls(/root))print(sudo(/bin/ls, /root))# with 环境with sh.contrib.sudo(_withTrue):print(ls(/root))
# _withTrue 关键字告诉命令它正处于 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.使用sh执行命令
命令的调用就像函数一样。
但是“需要注意的是这些不是真正的Python函数实际运行的是系统中对应的二进制命令就像Bash一样通过解析PATH在系统上动态地运行。 也正因为这样Python对Shell命令的支持非常好系统上所有命令都可以通过Python轻松运行。”
许多程序都有自己的命令子集例如git(分支签出)。 sh通过属性访问处理子命令。
from sh import git# resolves to git branch -v
print(git.branch(-v))print(git(branch, -v)) # the same command4.关键字参数
关键字参数也可以像您期望的那样工作它们被替换为命令行参数选项。
# Resolves to curl http://duckduckgo.com/ -o page.html --silent
sh.curl(http://duckduckgo.com/, opage.html, silentTrue)# 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, systemTrue, shell/bin/bash, no_create_homeTrue)# or
sh.adduser(amoffat, --system, --shell, /bin/bash, --no-create-home)5.查找命令
“Which”查找程序的完整路径如果不存在则返回None。 该命令是用Python函数真正实现的少数命令之一 因此不依赖于实际存在的”which”二进制程序。
print sh.which(python) # /usr/bin/python
print sh.which(ls) # /bin/lsif not sh.which(supervisorctl): sh.apt_get(install, supervisor, -y)sh还可以使用更多功能并且可以找到所有功能。 在里面官方文件。
6.Baking参数
sh可以将”baking”参数用作命令作用是输出对应的完整命令行字符串如下面的代码所示
# The idea here is that now every call to ls will have the “-la” arguments already specified.
from sh import lsls ls.bake(-la)
print(ls) # /usr/bin/ls -la# resolves to ls -la /
print(ls(/))sshbaking命令 在命令上调用”bake”会创建一个可调用对象该对象会自动传递所有传递给”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, p1393)print(myserver) # /usr/bin/ssh myserver.com -p 1393现在可调用“myserver”表示一个baking的ssh命令
# 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, n100))# check the uptime
print myserver.uptime()15:09:03 up 61 days, 22:56, 0 users, load average: 0.12, 0.13, 0.05如果想了解更多的内容和功能可以参考官方文件。 参考文章How to use sh in Python