[Python3]subprocess.check_output() 在python3的输出为bytes而非string,在实际使用过程中得增加一个解码过程decode(),不然会有问题
按以往python2的习惯编码输出报错
#-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
import os
import sys
import subprocess
from uiautomator import device as d
cmd = r'adb install F:\听力.apk'
info = subprocess.check_output(cmd).split("\r\n")
print (info)
输出如下,报错
Traceback (most recent call last):
File "C:\Users\lenovo\eclipse-workspace\WOO\src\debug\debug1.py", line 12, in <module>
info = subprocess.check_output(cmd).split("\r\n")
TypeError: a bytes-like object is required, not 'str'
查询python3文档有下面描述:
证实过程是不是这样,我们把这个subprocess.check_output()的类型打印出来如下,确实为bytes类型,需要人为再转换一次为string
#-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
import os
import sys
import subprocess
from uiautomator import device as d
cmd = r'adb install F:\听力.apk'
info = subprocess.check_output(cmd)
print (type(info))
输出如下:
<class 'bytes'>
正确的如下:
#-*- coding:utf-8 -*-
'''
Created on 2018年7月21日 @author: lenovo
'''
import os
import sys
import subprocess
from uiautomator import device as d
cmd = r'adb install F:\听力.apk'
info = subprocess.check_output(cmd)
info1 = info.decode()
print (info1.split('\r\n'))
输出如下:
['Success', '']
[Python3]subprocess.check_output() 在python3的输出为bytes而非string,在实际使用过程中得增加一个解码过程decode(),不然会有问题的更多相关文章
- subprocess.run()用法python3.7
def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): "&q ...
- 【学习笔记】第七章 python3核心技术与实践--输入与输出
[第六章]思考题答案,仅供参考: # coding:utf-8import time#方法一start_time = time.perf_counter()s = ''for n in range(0 ...
- 【Android自动化】Subprocess.check_output()简单用法
# -*- coding:utf-8 -*- import os import sys import subprocess from uiautomator import device as d cm ...
- 转 python3中SQLLIT编码与解码之Unicode与bytes
#########sample########## sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with ...
- Python3使用过程中需要注意的点
命名规则 变量 变量名只能是数字.字母或下划线的任意组合 变量名的第一个字符不能是数字 不能使用关键字作为变量名 变量的定义要具有可描述性 变量名不宜过长.不宜使用中文.拼音 常量(常用在配置文件中) ...
- python3中的编码与解码(超好理解)
编码和解码是针对数据而言的,数据能干什么呢?无非就是用来显示,储存和传输的: 储存和传输数据当然是希望数据越小越好,所以发明了utf-8这种数据编码显示:它智能将英文用一个字节表示,欧洲的字符用两个字 ...
- linux下python2升级python3,python2和python3并存
wget https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tgz 解压:tar -xzvf Python-3.6.4.tgz cd Pytho ...
- centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题。
centos7安装Python3的过程中会和Python2.7版本冲突导致yum版本比对应,致使yum不能使用的问题. 原因:yum调用Python,启动程/usr/bin/yum就是一个python ...
- centos6.5下 python3.6安装、python3.6虚拟环境
https://www.cnblogs.com/paladinzxl/p/6919049.html # python3.6的安装 wget https://www.python.org/ftp/pyt ...
随机推荐
- Java面试——你必须知道的122题
1.Java面向对象中所有类的最终基类是什么? 参考答案 object,所有类都默认最终继承object,object是所有类的基类 2.什么是Java虚拟机?为什么Java被称作是“平台无关的编程语 ...
- C#基础知识回顾--串行化与反串行化
串行化是指存储和获取磁盘文件.内存或其他地方中的对象.在串行化时,所有的实例数据都保存到存储介质上, 在取消串行化时,对象会被还原,且不能与其原实例区别开来.只需给类添加Serializable属性, ...
- SQL 拼接多个字段的值&一个字段多条记录的拼接
如student表: studentID studentName studentScore 01 Alice 90 02 Bill 95 03 Cindy 100 一.拼接多个字段的值 select ...
- winform窗体 小程序【进程】
进程 一个应用程序就是一个进程,我的理解是,只要是打开应用程序,就会创建进程. 在.NET框架在using.System.Diagnostics名称空间中,有一个类Process,用来创建一个新的进程 ...
- sqlserver清除缓存(转载)
sqlserver清除缓存,记录查询时间 1 2 3 4 5 6 7 8 9 10 11 12 --1. 将当前数据库的全部脏页写入磁盘.“脏页”是已输入缓存区高速缓存且已修改但尚未写入磁盘的数据 ...
- sqlserver 删除表中数据 id 从1开始
TRUNCATE TABLE TbName --TbName是表名 但如果TbName中某些字段与其它表有主外键关系,会报错: 无法截断表 'Plants',因为该表正由 FOREIGN KE ...
- [日常] Linux下的docker实践
1.Linux 发展出了另一种虚拟化技术:Linux 容器(Linux Containers,缩写为 LXC) 2.Linux 容器不是模拟一个完整的操作系统,而是对进程进行隔离 3.Docker 属 ...
- Number Sequence(hdu4390)
Number Sequence Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Tot ...
- Linux安装mysql教程
安装之前需要先卸载mysql 1.1.下载压缩包 [root@guohaien package]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7 ...
- 华中农业大学第五届程序设计大赛网络同步赛-L
L.Happiness Chicken brother is very happy today, because he attained N pieces of biscuits whose tast ...