subprocess用法笔记
class Test:def __init__(self, path):self.path = pathdef test(self):p = subprocess.check_output('type ' + self.path, shell=True) # bytes类型,输出全部print(p.decode()) # bytes -> strdef test1(self):p = subprocess.Popen('type ' + self.path, stdout=subprocess.PIPE, shell=True)a = p.stdout.read() # bytes类型,输出全部print(a.decode()) # bytes -> strdef test2(self):p = subprocess.Popen('type ' + self.path, stdout=subprocess.PIPE, shell=True)a = p.stdout.readline() # bytes类型,输出一行print(a.decode()) # bytes -> strdef test3(self):p = subprocess.Popen('type ' + self.path, stdout=subprocess.PIPE, shell=True)a = p.stdout.readlines() # list类型,输出全部print(a)def test4(self):p = subprocess.Popen('type ' + self.path, stdout=subprocess.PIPE, shell=True)print(p.stdout)for i in p.stdout:print(i) # bytes类型,输出一行,同p.stdout.readline()
1、连续执行shell命令
方法一:
cmds = [b"alias ls='ls --color=never'",b"cd usr",b"ls",b"exit" # 这是是非常关键的,退出]
pipe = subprocess.Popen("adb shell", stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = pipe.communicate(b"\n".join(cmds) + b"\n")
print(out)
参考
https://blog.csdn.net/telenewbie/article/details/60580727
方法二:
p1 = subprocess.Popen("adb shell cd usr&&ls --color=never", stdout=subprocess.PIPE, shell=True)
print(p1.stdout.read())
同时执行多行命令:
无论是 Linux/Mac 还是 Windows 的 shell 命令都支持一条命令来执行多条命令的。一共有 &&,&,||,| 这么几种方式,这几种方式分别代表着不同的含义:&&:command1 && command2,如果 command1 执行成功了,就执行命令 command2,如果 command1 失败了,就不会执行 command2 了。
&:command1 & command2,无论 command1 执行成功与否都会执行 command2。
||:command1 || command2,如果 command1 执行成功了,就不会执行 command2 了,如果 command1 失败了,就会继续执行 command2。
|:command1 | command2,command1 的结果做为 command2 的参数,如果 command1 失败了,整个命令也就都失败了。
Linux/Mac 下还可以使用 ; 来链接两条命令,顺序执行命令,不管成功与否都往后执行,和 & 含义一样。
参考
http://blog.sina.com.cn/s/blog_44d19b500102w585.html
2、执行命令并持续获取返回值
import subprocess
order = 'adb logcat'
pi = subprocess.Popen(order, shell=True, stdout=subprocess.PIPE)
for i in iter(pi.stdout.readline, 'b'):print(i)
参考
http://blog.sina.com.cn/s/blog_44d19b500102x21i.html
subprocess用法笔记相关推荐
- easyui前端实现多选框_前端:Element UI 多选框组用法笔记
今天给大家分享一下Element UI 多选框组用法笔记,直接上代码! "兴趣爱好:"> "form.checkList"> for= {{item ...
- springboot+mybatis集成自定义缓存ehcache用法笔记
今天小编给大家整理了springboot+mybatis集成自定义缓存ehcache用法笔记,希望对大家能有所办帮助! 一.ehcache介绍 EhCache 是一个纯Java的进程内缓存管理框架,属 ...
- SpringBoot集成Redis用法笔记
今天给大家整理一下SpringBoot集成Redis用法笔记,希望对大家能有所帮助! 一.Redis优点介绍 1.速度快 不需要等待磁盘的IO,在内存之间进行的数据存储和查询,速度非常快.当然,缓存的 ...
- SpringBoot集成Mybatis用法笔记
今天给大家整理SpringBoot集成Mybatis用法笔记.希望对大家能有所帮助! 搭建一个SpringBoot基础项目. 具体可以参考SpringBoot:搭建第一个Web程序 引入相关依赖 &l ...
- SQLServer知识:sqlcmd用法笔记
今天给大家介绍sqlcmd用法笔记,希望对大家能有所帮助! 1.介绍 sqlcmd是一个 Microsoft Win32 命令提示实用工具,可以通过该命令工具实现SQL语句.脚本的执行,并且可以实现脚 ...
- 前端:Element UI 多选框组用法笔记
今天给大家分享一下Element UI 多选框组用法笔记,直接上代码! <html><head></head><body><el-form> ...
- shell脚本常用语句用法笔记
脚本基本语句用法笔记 grep -i 查询时不区分大小写 -n打印匹配的行号 -v 打印不匹配的行 -AX包括每次匹配之后X行 -BX包括每次匹配之后X行 cat /etc/passwd |grep ...
- IDEA中安装配置Jrebel热部署插件用法笔记
今天给大家介绍一下IDEA中安装配置Jrebel热部署插件用法,希望对大家能有所帮助! 1.Jrebel插件介绍 JRebel属于一款JAVA虚拟机插件,它可以让你的项目在不需要进行重新编译的情况下, ...
- 后端:C#操作Mongodb用法笔记
MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.今天主要给大家介绍一下C#编程语言下Mongodb的用法.开发环境为VS ...
最新文章
- Python 中少为人知的 10 个安全陷阱
- 除 Java 外,还有哪些编程语言蹭了 JVM 的车票?
- 《Windows 系列》- 右击添加管理员权限
- Java与C#平台通信 WCF CXF SOAP
- Java中 ArrayList类常用方法和遍历
- linux-命令模式-光标定位-编辑中20.22
- Abseil之New Join API
- css中背景颜色的代码,css背景代码是什么,css怎么控制背景颜色
- 摄影爱好者尝试图库销售时需要注意什么?| 拍者手记
- 利用gitee仓库的流水线功能实现Java项目的自动化部署
- 基于CNN实现垃圾分类案例
- 中首清算质疑偶像演员不适合演抗战剧?《雷霆战将》三大还原引争议
- 【Redis基础和应用】(四)HyperLogLog BloomFilter
- GNU 编译C++程序
- 用python实现智能监控
- Diagram Designer
- Vue项目中使用海康安全生产平台播放监控视频
- C语言-MSB/LSB大小端序
- C语言中的stdbool.h头文件
- UE4对电脑配置的要求