遇到的python3 不兼容 python2的地方

Posted 西橙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了遇到的python3 不兼容 python2的地方相关的知识,希望对你有一定的参考价值。

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的地方的主要内容,如果未能解决你的问题,请参考以下文章

python2.9与python2.11兼容不

(个人记录)Python2 与Python3的版本区别

让你的python程序同时兼容python2和python3

python3与python2不一样的地方

Python2和Python3两者区别

初学者学习python2还是python3?