subprocess模块简介(subspaces)

网友投稿 1019 2022-09-05


subprocess模块简介(subspaces)

subprocess模块简介

sbuprocess简介

subprocess模块可以执行系统命令,该模块允许用户创建一个新的进程,该进程会连接到input|output|error管道并获取到返回的状态码。

subprocess包含的子类

本文版本是以python3.6为准,其它版本请参考官方手册。

subprocess.run

subprocess.run(args, *, stdin=None, input=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None, errors=None, env=None)

args:我们要执行的命令。值可以是字符串、列表、元组、如果是字符串,则该命令不可以加命令选项,否则会报错。如果需要加命令选项则必须设置shell=True。

input:这个参数不知道干嘛用的,该参数会被传递给communicate(input, timeout=timeout),然后该函数将input传递给stdin,然后就不知道了。

stdin:标准输入。

stdout:标准输出。

stderr:标准错误。

cwd:执行命令的路径。

timeout:超时时间,单位:秒。

check:如果该值为True且进程返回非0的状态码,将触发​​​CalledProcessError​​​异常,该异常的属性会保存args、process状态码、stuout、stderr。

encoding:指定打开stdin、stdout、stderr的编码方式,如果不指定默认是以二进制的方式打开。

env:设置环境变量,让命令在该环境下运行。

示例:

# 基本的使用import subprocessret = subprocess.run(['ls','/home/test'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding='utf-8')print(ret)# 打印结果如下CompletedProcess(args=['ls', '/home/test'], returncode=0, stdout='abc\ntest.txt\n', stderr='')# 使用字符串的命令就要将shell=Trueimport subprocessret = subprocess.run('ls /home/test',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding='utf-8')print(ret)# 打印结果如下CompletedProcess(args='ls /home/test', returncode=0, stdout='abc\ntest.txt\n', stderr='')# 如我们只想看命令结果import subprocessret = subprocess.run('ls /home/test',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding='utf-8')print(ret.stdout)# 打印结果如下abctest.txt# 使用切换目录的功能import subprocessret = subprocess.run('ls -l',cwd='/home/test',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE, encoding='utf-8',check=True)print(ret.stdout)# 打印结果如下总用量 0drwxr-xr-x 2 root root 6 4月 18 09:22 abc-rw-r--r-- 1 root root 0 4月 24 11:02 test.txt# 捕获异常import subprocesstry: ret = subprocess.run('ls /home/tst',shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding='utf-8',check=True)except Exception as e: print(e)# 打印结果如下Command 'ls /home/tst' returned non-zero exit status 2.

待续。。。。。。。。。。。。。。。。。。。。。。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解JUC并发编程之锁
下一篇:Python初学第三段代码(python3介绍)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~