利用python执行shell脚本 并动态传参 及subprocess基本使用


本文摘自php中文网,作者不言,侵删。

本篇文章给大家分享了利用python执行shell脚本 并动态传参 及subprocess基本使用,有感兴趣的小伙伴可以看一看

最近工作需求中 有遇到这个情况 在web端获取配置文件内容 及 往shell 脚本中动态传入参数

执行shell脚本这个有多种方法 最后还是选择了subprocess这个python标准库

subprocess这个模块可以非常方便的启动一个子进程,并且控制其输入和输出

Class Popen(args,bufsize = 0,executable=None,
stdin =None,stdout =None,stderr =None,
preexec_fn = None,close_fds = False,shell = False,
cwd = None,env = None,universal_newlines = False,
startupinfo = None,creationflags = 0):
参数是:
args 应该是一个字符串,或一系列程序参数。要执行的程序通常是args序列或字符串中的第一项,但可以使用可执行参数进行显式设置。
在UNIX上,与shell=False(默认):在这种情况下,POPEN 类使用os.execvp()来执行子程序。 args通常应该是一个序列。一个字符串将被视为一个字符串作为唯一项目(要执行的程序)的序列。

在UNIX上,使用shell = True:如果args是一个字符串,则它指定要通过shell执行的命令字符串。如果args是一个序列,则第一个项目指定命令字符串,并且任何其他项目将被视为附加的shell参数。

可以先创建一个简单的shell脚本 a.sh

$1 $2 分别代表传进脚本的 第一个和第二个参数


如果不写shell=True,默认为shell=False,需要在args的第一个参数指定执行器路径



bufsize 如果给出,bufsize与内建的open()函数的相应参数具有相同的含义:0表示无缓冲,1表示行缓冲,任何其他正值意味着使用(大约)该大小的缓冲区。负bufsize意味着使用系统默认值,通常意味着完全缓冲。bufsize的默认值是0(无缓冲)。


stdin,stdout和stderr分别指定执行的程序的标准输入,标准输出和标准错误文件句柄。有效值是PIPE,现有文件描述符(正整数),现有文件对象和 None。 PIPE表示应该创建一个新的管道给孩子。随着无,则不会发生重定向; 孩子的文件句柄将从父类继承。另外,stderr 可以是STDOUT,它表示应用程序的stderr数据应该被捕获到与stdout相同的文件句柄中。

阅读剩余部分

相关阅读 >>

Python中关于装饰器级连的示例

Python利用os模块批量修改文件名的方法介绍(附代码)

Python如何求水仙花数?

字符串格式化:%和.format怎么使用

知道Python 为什么要有 pass 语句?

Python运算符-经常能用到的成员运算符(实例解析)

Python中几种常用字符串函数

Python中add函数怎么用

Python如何导入图片

Python中str和repr有什么区别

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...