TypeError:需要一个类似字节的对象,而不是从文件中读取时的“ str”

时间:2018-09-08 08:02:52

标签: python string python-3.x byte file-handling

我正在尝试使用文件中的数据集在ML中实现我的项目

authors_file_handler = open(authors_file, "r")
authors = pickle.load(authors_file_handler)
authors_file_handler.close()

此后,我在此行中出错

  

authors = pickle.load(authors_file_handler)

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

1 个答案:

答案 0 :(得分:4)

您需要以二进制读取模式打开文件:

authors_file_handler = open(authors_file, "rb") # Note the added 'b'
authors = pickle.load(authors_file_handler)
authors_file_handler.close()

来自pickle.load() docs

  

参数文件必须具有两个方法,一个read()方法需要一个   整数参数,以及不需要参数的readline()方法。   两种方法都应返回字节。因此文件可以是磁盘上的文件   已打开以进行二进制读取,一个io.BytesIO对象或任何其他自定义   符合此接口的对象。