subprocess
subprocess模块允许启动一个新进程,并连接到它们的input输入/output输出/error错误管道,从而获取返回值
在python2.4新增,用于替换os.system、os.popen等
subprocess模块首推run方法,更高级用法可以直接使用Popen
run
说明:
1、shell=True
指令的参数可以是string或list,当为string时,必须加shell=True
2、universal_newlines=True
影响的输入与输出的数据格式.默认为False,stdout和stderr的输出是字节序列;True时,stdout和stderr的输出是字符串。
# 1、在cmd中执行基本指令
subprocess.run("adb shell input keyevent 4", shell=True)
# 2、获取是否执行成功
ret = subprocess.run("adb -s " + adb + " " + "exec-out screencap -p > " + pic_now, shell=True)
if ret.returncode == 0: # 成功时返回0
pass
else:
pass
# 3、获取执行后的输出值
# 获取最新的相片的名字;默认相片格式为jpg的
pic_name_bytes = subprocess.run(
adb_device + "shell ls -t " + src_dir + " " + "| grep '.jpg'| head -n 1",
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
universal_newlines=True).stdout
Popen
Popen 是 subprocess的核心,子进程的创建和管理都靠它处理。
args:shell命令,可以是字符串,或者序列类型,如list,tuple。
bufsize:缓冲区大小,可不用关心
stdin,stdout,stderr:分别表示程序的标准输入,标准输出及标准错误
shell:与上面方法中用法相同
cwd:用于设置子进程的当前目录
env:用于指定子进程的环境变量。如果env=None,则默认从父进程继承环境变量
universal_newlines:不同系统的的换行符不同,当该参数设定为true时,则表示使用\n作为换行符
主要用的的参数就是:args、stdin、stdout、stderr、shell(官方推荐shell=False)
2、stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE:
分别代表标准输入,标准输出,标准错误输出。subprocess.PIPE代表的是管道可以理解成线程
参考链接:
https://blog.csdn.net/weixin_39059031/category_10163802.html