#subprocess 创建子进程 连接输入 输出 管道错误,及获取他们的状态,可执行操作系统级的命令
# 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)
stdin stdout stderr 文件描述符 或对象 subprocess.PIPE subprocess.DEVNULL None
encoding默认字节,可设置编码
shell为True,通过shell执行的命令
args为字符串,必须指定shell=True
args为字符串列表,不用指定shell,默认shell=False
args为字符串列表,指定shell=True时,参数被忽略
#返回的是CompletedProcess对象
args 进程的参数
returncode 状态码
stdout 输出信息 为bytes,需要通过decdoe编码才正常显示字符串
stderr 错误信息
check_returncode 返回码
ret = subprocess.run(['ipconfig', '/all'],stdout=subprocess.PIPE)
result=bytes(ret.stdout).decode(encoding='gbk')
print(result)
print(sys.builtin_module_names)
print(sys.modules)
ret = subprocess.run(['ipconfig', '/all'], shell=True)
s = subprocess.Popen("python", stdout=subprocess.PIPE, stdin=subprocess.PIPE, shell=True)
s.stdin.write(b"import os
")
s.stdin.write(b"print(os.environ)")
s.stdin.close()
out = s.stdout.read().decode("GBK")
s.stdout.close()
print(out)