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

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

时间:2016-12-21 20:32:53      阅读:764      评论:0      收藏:0      [点我收藏+]

标签:读取   line   strip()   tac   decode   方法   使用   connect   byte   

出现该错误往往是通过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'

标签:读取   line   strip()   tac   decode   方法   使用   connect   byte   

原文地址:http://www.cnblogs.com/zlgxzswjy/p/6208809.html

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