Subprocess,python3 subprocess模块
子过程模块简介
战略事业单位过程简介子过程模块可以执行系统命令,该模块允许用户创建一个新的进程,该进程会连接到输入输出错误管道并获取到返回的状态码。
子过程包含的子类本文版本是以python3.6为准,其它版本请参考官方手册。
子流程。运行子流程。run(args,*,stdin=None,input=None,stdout=None,stderr=None,shell=False,cwd=None,timeout=None,check=False,encoding=None,errors=None,env=None)
参数:我们要执行的命令。值可以是字符串、列表、元组、如果是字符串,则该命令不可以加命令选项,否则会报错。如果需要加命令选项则必须设置shell=True。
输入:这个参数不知道干嘛用的,该参数会被传递给通信(输入,超时=超时),然后该函数将投入传递给标准输入,然后就不知道了。
标准输入:标准输入。
标准输出:标准输出。
标准错误:标准错误。
cwd:执行命令的路径。
超时:超时时间,单位:秒。
检查:如果该值为真实的且进程返回非0的状态码,将触发CalledProcessError异常,该异常的属性会保存参数、过程状态码、stuout、stderr。
编码:指定打开标准输入、标准输出、标准错误的编码方式,如果不指定默认是以二进制的方式打开。
环境:设置环境变量,让命令在该环境下运行。
示例:
# 基本的使用
导入子流程
ret=subprocess.run([ls ,/home/test],stdout=subprocess .管道,标准错误=子进程。管道,编码=utf-8 )
打印(退休)
# 打印结果如下
CompletedProcess(args=[ls ,/home/test],returncode=0,stdout=abc\ntest.txt\n ,stderr= )
# 使用字符串的命令就要将shell=True
导入子流程
ret=子流程。run( ls/home/test ,shell=True,stdout=subprocess .管道,标准错误=子进程。管道,编码=utf-8 )
打印(退休)
# 打印结果如下
已完成的进程(args= ls/home/test ,returncode=0,stdout=abc\ntest.txt\n ,stderr= )
# 如我们只想看命令结果
导入子流程
ret=子流程。run( ls/home/test ,shell=True,stdout=subprocess .管道,标准错误=子进程。管道,编码=utf-8 )
打印(ret.stdout)
# 打印结果如下
字母表
测试。文本文件(textfile)
# 使用切换目录的功能
导入子流程
ret=subprocess.run(ls -l ,cwd=/home/test ,shell=True,stdout=subprocess .管道,标准错误=子进程。管道,
编码=utf-8 ,校验=真)
打印(ret.stdout)
# 打印结果如下
总用量0
drwxr-xr-x 2根根6 4月18时09分22秒字母表
-rw-r - r - 1根根0 4月24 11:02 test.txt
# 捕获异常
导入子流程
尝试:
ret=子流程。run( ls/home/tst ,shell=True,stdout=子进程.管道,标准错误=子进程。管道,编码=utf-8 ,检查=真)
例外情况为e:
打印(五)
# 打印结果如下
命令 ls /home/tst 返回非零退出状态2。待续。。。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。