python 3.5: TypeError: a bytes-like object is required, not 'str'

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 3.5: TypeError: a bytes-like object is required, not 'str'相关的知识,希望对你有一定的参考价值。

出现该错误往往是通过open()函数打开文本文件时,使用了‘rb’属性,如:fileHandle=open(filename,‘rb‘),则此时是通过二进制方式打开文件的,所以在后面处理时如果使用了str()函数,就会出现该错误,该错误不会再python2中出现。

具体解决方法有以下两种:

第一种,在open()函数中使用‘r’属性,即文本方式读取,而不是‘rb’,以二进制文件方式读取,可以直接解决问题。

第二种,在open()函数中使用‘rb’,可以在使用之前进行转换,有以下实例,来自:http://stackoverflow.com/questions/33054527/python-3-5-typeerror-a-bytes-like-object-is-required-not-str

 

1:查找文件时:
with open(fname, ‘rb‘) as f:
                if b‘some-pattern‘ in tmp: continue

2:使用socketl连接时:
mysock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mysock.connect((‘www.py4inf.com‘, 80))
mysock.send(**b**‘GET http://www.py4inf.com/code/romeo.txt HTTP/1.0\n\n‘)

while True:
    data = mysock.recv(512)
    if ( len(data) < 1 ) :
        break
    print (data);

mysock.close()

3:提前进行编码:
with open(fname, ‘rb‘) as f:
    lines = [x.decode(‘utf8‘).strip() for x in f.readlines()]

 

以上是关于python 3.5: TypeError: a bytes-like object is required, not 'str'的主要内容,如果未能解决你的问题,请参考以下文章

Python 3.5 尝试使用 sklearn 和 matplotlib 绘制 PCA

Python版本2.7切3.5和3.5切2.7

Python 3.5 笔记集合

python中的ValueError和TypeError

CentOS-6.9升级到Python-3.5

Python 3.5新特性都有些什么