简化系统命令执行的库

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}")

假设变量machineIPthePath有值。这个脚本的正常输出通过管道传输到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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java什么会导致程序在它似乎拥有的监视器上被阻止?   java Android studio设置视图的背景色   java我可以保存一个文本文件而不给用户修改它的能力吗?   pdfbox PDFBOX2。0:java堆堆栈错误   java是维护和操作AllowList的有效方法   JAVAsql。SQLException:找不到适合jdbc的驱动程序:mysql://localhost:3306/asd性爱   如何使用java。lang.NullPointerException:void 安卓。支持v7。应用程序。ActionBar。setElevation(float)“”在空对象引用上'   java调试空指针异常   java正则表达式,以按令牌的特定匹配项拆分,同时忽略其他匹配项   java为JPanel设置边框上的笔划   并发@Schedule方法的java行为   如何在Java中使用泛型与语言运算符和泛型类扩展数   java Rhino Javascript如何为异常堆栈跟踪标记字符串源   运行可执行jar时发生java错误,无法找到或加载主类