简化系统命令执行的库

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 HTTP Status 500实例化servlet类示例时出错。网络应用   java如何在Android中存储密钥   固定宽度的java JScrollPane   Scala枚举可以映射到像Java这样的整数吗?   Java的命名约定是什么。属性文件?   从Apple Script运行Java的applescript   哪种类型的花括号编码风格更适合java程序员?   SpringWebFlux中的java实现“有效”,但我试图理解“为什么?”   java在给定条件下找到可能的最小数组   ExecutorService的java超时而不阻塞主线程   Java:将对象强制转换为数组类型   java无法引用/修改innerclass中的非最终变量   java Android Studio网络探查器:无法在网络活动图上选择范围   java XMLUnit忽略元素顺序   java无法从游标窗口读取第0行第1列错误   java如何在weka random forest中获取ClassValue?   java如何设置单击计数以显示对象?