Discuss / Python / 求解????

求解????

Topic source

楠先森咩

#1 Created at ... [Delete] [Delete and Lock User]

对于文中将d序列化然后写入文件也可以用下面的with方法,在前面的章节说过。

import pickle
d = dict(name='Bob', age=20, score=88)
with open('dump.txt', 'wb') as f:
    f.write(pickle.dumps(d))

但是在将文件反序列化然后读取的时候用这种方法就不行了,为什么?我的代码哪里有问题?

d=pickle.loads(f)
with open('dump.txt', 'rb') as d:
    print(d.read())

给出的错误信息:a bytes-like object is required, not '_io.BufferedReader'

野猪样蛙

#2 Created at ... [Delete] [Delete and Lock User]

f 是 open('dump.txt', 'wb')

而反序列化是需要'rb'的,不是'wb'。

而且 d=pickle.loads(f) 就是读取了也是返回一个dict,并不具有read()属性。

所以最小幅度修改之后,应该是:

import pickle

d = dict(name='Bob', age=20, score=88)
with open('dump.txt', 'wb') as f:
    f.write(pickle.dumps(d))
   
with open('dump.txt', 'rb') as d:
    D = pickle.load(d)
    print(D)


  • 1

Reply