zoukankan      html  css  js  c++  java
  • 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
    
    ')
    
    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()]
    
  • 相关阅读:
    【动态规划】合唱团
    【动态规划】抄近路
    【动态规划】机器人军团
    【贪心】赶作业
    【贪心】时空定位I
    【贪心】雷达问题
    【贪心】监测点
    【贪心】闭区间问题
    设计与实现
    Hello World
  • 原文地址:https://www.cnblogs.com/zlgxzswjy/p/6208809.html
Copyright © 2011-2022 走看看