Subprocess 模块:
作用1:它通过主进程,生成一个子进程,来执行一个操作系统命令,然后返回执行结果。这个结果可以存储到变量里,做后续使用
作用2:某个命令指向之后的结果,还可以传递给另外一个命令
在CMD中
>>> import os >>> a = os.system('dir') 驱动器 C 中的卷是 OS 卷的序列号是 DC49-453A C:\Users\admin\PycharmProjects\test1 的目录 2020/03/27 20:16 <DIR> . 2020/03/27 20:16 <DIR> .. 2020/03/27 20:20 <DIR> .idea 2020/03/26 09:33 1,091 generator.py 2020/03/27 16:31 502 hello.py 2020/03/20 23:16 426 index.html 2020/03/16 08:03 <DIR> parent_directory 2020/03/27 20:16 270 test1.py 2020/02/11 11:32 <DIR> venv 2020/03/16 15:16 <DIR> __pycache__ 4 个文件 2,289 字节 6 个目录 113,394,843,648 可用字节 >>> a # 无法获取上面的数据,这时就可以使用Subprocess模块 0
语法
res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
cmd:向子进程传入需要执行的shell命令,如 dir
shell: 是否是shell命令
stdout=subprocess.PIPE:把结果啊保存到文本中
stderr=subprocess.STDOUT:把结果打印在屏幕上
例子
import subprocess obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) obj.stdin.write(b"print(1)\n") obj.stdin.write(b"print(2)\n") obj.stdin.write(b"print(3)\n") obj.stdin.write(b"print(4)\n") out_info,out_error = obj.communicate() print(out_info,out_error) # stdout 和 stderr 和 stdin 的区别 # stdin :标准输入,input # stdout 标准输出,print 默认输出到屏幕 # stderr 错误输出,默认是输出到屏幕 结果: b'1\r\n2\r\n3\r\n4\r\n' b''
来源:https://www.cnblogs.com/su-sir/p/12584503.html