在服务器上python2环境中读取pickle文件,报错ImportError: No module named copy_reg。这是因为Windows和Linux的pickle文件的存储格式不同。在windows中新行的符号存储成"\r\n",而在Linux中,新行的符号存储成"\n",因此,当在Linux上读取pickle文件出错时,应该朱行读取pickle文件,将其中的"\r\n"替换成"\n",然后将其写回到文件中。
代码:
#run this code on Linux platform
DIR="your/dir/to/file"
pickle.load(open(DIR,"rb"))
# ImportError: No module named copy_reg pickle
a=open(DIR,"rb").readlines() #read pickle file line by line
a=map(lambda x:x.replace("\r\n","\n"),a) # replace \r\n with \n
with open(DIR,"wb") as j: #write back to file in binary mode
for i in a:
j.write(i)
pickle.load(open(DIR,"rb"))
#Now it works well
这样就解决了问题