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
分类:
linux
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?