码迷,mamicode.com
首页 > 编程语言 > 详细

遇到的python3 不兼容 python2的地方

时间:2018-04-11 19:10:29      阅读:276      评论:0      收藏:0      [点我收藏+]

标签:proc   linu   rip   mha   一个   例子   ack   man   gen   

python3中执行以下代码

>>> import subprocess
>>> p=subprocess.Popen(ls,shell=True,stdout=subprocess.PIPE) 
>>> d=p.stdout.read()
>>> d
bagent2.0.tgz\njdk1.8.0_152\njdk-8u152-linux-x64.tar.gz\nmha4mysql-manager-0.56-0.el6.noarch.rpm\nmha4mysql-node-0.56-0.el6.noarch.rpm\nscript.rpm.sh\nscripts\n
>>> d.split(\n)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: str does not support the buffer interface

buffer interface允许对象公开其底层缓冲区的信息,使用 buffer interface的的一个例子是file对象的write()方法,任何通过buffer interface 导出一系列字节的对象都可以被写入文件。python3开始只支持bytes和Unicode编码,不再支持str

解决方法是,将str 转换为tytes,处理完之后再转回str类型

>>> p=subprocess.Popen(ls,shell=True,stdout=subprocess.PIPE)
>>> d=p.stdout.read()
>>> d.split(bytes(\n,utf8))
[bagent2.0.tgz, bjdk1.8.0_152, bjdk-8u152-linux-x64.tar.gz, bmha4mysql-manager-0.56-0.el6.noarch.rpm, bmha4mysql-node-0.56-0.el6.noarch.rpm, bscript.rpm.sh, bscripts, b‘‘]

 

遇到的python3 不兼容 python2的地方

标签:proc   linu   rip   mha   一个   例子   ack   man   gen   

原文地址:https://www.cnblogs.com/Bccd/p/8797453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!