简化系统命令执行的库
sysexecute的Python项目详细描述
目的
sysexecute python包允许更轻松地执行系统任务。其中一部分是用于变量替换的自动格式化机制,另一部分是能够简单地指定执行选项。
安装
您可以通过pip从pypi安装sysexecute
:
pip install sysexecute
变量替换
通常在python中,为了格式化一个字符串,我们可以执行如下操作:
val = 3
print("the value of val is {val}".format(val=val))
这有点冗长和多余。如果我们已经有了val
的值,那么它应该可以被替换。事实上,如果我们这样做
from sysexecute import *
val = 3
print (stringWithVars("the value of val is {val}"))
变量的绑定遵循普通的python作用域规则。这使得执行语句更具可读性。
执行
下面是一个典型的执行过程
execute("ssh {machineIP} ls {thePath}")
假设变量machineIP
和thePath
有值。这个脚本的正常输出通过管道传输到stdout和stderr,但是如果您想捕获这些内容,可以使用如下方法:
(rc, stdout, stderr) = execute("ssh {machineIP} ls {thePath}", captureStdOutStdErr=True)
您可以指定各种关键字选项,如:
cwd
:更改执行命令的目录ignoreErrors
:除非这是真的,否则如果存在非零的返回代码,将发出sys.exit(returnCode)
。shell
:是否应该使用shell(默认为True
)executable
:使用哪个shell(默认为/bin/bash
)colorize
:是否对输出进行着色(默认为True
)dryRun
:打印将要执行但不实际执行的内容
详细信息
通常在脚本中,我们希望根据请求显示的详细程度包括调试/信息注释。您可以通过eg:
set_execute_defaults('verbosity',2)
然后在下面只打印前两个字符串:
printWithVars1("success!")
printWithVars2("Machine {machineIP} was reached.")
printWithVars3("You might want to check that blah and blah.")
测试
要运行测试套件,您需要在计算机上安装py.test
。然后您可以简单地执行:
cd tests
py.test