Pickle(无文件IO):TypeError:需要类似字节的对象,而不是'str'

时间:2017-12-13 21:38:08

标签: typeerror pickle python-3.6

我仅从对象序列化中获取此TypeError,即。没有涉及文件IO(与其他类似帖子不同)。一段代码是:

for itr in range(numiters):
    #Sample from proposal distribution
    d_star,Jratio,R_star,step = proposal(d_t,R_t,X,Y,alpha)
    #Compute the new posterior value, if necessary
    a_star = Pickle.dumps(d_star[:R_star+1])
    print(type(a_star))
    permsdic[a_star] = ...

另一个是:

for perm in permsdic.keys():
    print(type(perm))
    print(perm)
    d_t = Pickle.loads(perm)

然而我得到了上述错误:d_t = Pickle.loads(perm) 第一个块中print语句的输出是:

class'bytes'

然而在第二个街区却是某种方式:

class'str'

B '\ X80 \ X03]●\ X00(K \ x01K \ x03K \ x05K \ x0cK \ x00e。'

这是在Python 3.6中(我正在尝试改编旧的Python库)

1 个答案:

答案 0 :(得分:0)

我能够通过使用eval()函数使其工作,即以下工作

for perm in permsdic.keys():
    print(type(perm))
    print(perm)
    d_t = Pickle.loads(eval(perm))

我仍然不明白为什么这是必要的......