python中的酸洗错误?

mar*_*rsx 15 python pickle

我收到这个错误,我不知道这意味着什么.我该如何解决这个问题?

我的代码看起来像这样,我以前使用它并且它已经工作:

parentdir = os.getcwd()
dirlist = os.listdir(parentdir)

for dir in dirlist:
    if not dir == "pubs_edits": continue
    if os.path.isdir(os.path.join(parentdir, dir)):
                        os.chdir(os.path.join(parentdir, dir))
                        file_list = os.listdir(os.path.join(parentdir, dir))
                        for f in file_list:
                            in1 = open(f, 'r')
                            dict2 = pickle.load(in1)
Run Code Online (Sandbox Code Playgroud)

这是错误消息:

    File "/home/md202/pmid_editor.py", line 18, in <module>
        dict2 = pickle.load(in1)
    File "/usr/lib/python2.5/pickle.py", line 1370, in load
        return Unpickler(file).load()
    File "/usr/lib/python2.5/pickle.py", line 858, in load
        dispatch[key](self)
KeyError: '\x00'
Run Code Online (Sandbox Code Playgroud)

小智 13

当我尝试使用pickle.loads(通过django存储在数据库中的字符串表示)时,发生了这个确切的错误.Django改变了我的字符串的charactee表示,以便pickle.loads(mystring)把这个错误扔给我.当我添加显式字符串转换时,它很好:pickle.loads( str(mystring) )

编辑:看看原帖的评论,我认为这与提到的unicode字符串问题有关.我把一个普通的字符串放入数据库,django给了我一个产生这个错误的unicode字符串.


小智 -2

也许你应该尝试另一个协议pickle.load(in1, 2)

  • 根据文档,load() 不带可选参数,只有 dump 带有可选参数。 (2认同)