我正在将一些代码从Python 转换为Python ,而且我很苦恼有一个泡菜问题!这里是什么,我试图做一个简单的例子:Python 3的Pickle错误
class test(str):
def __new__(self, value, a):
return (str.__new__(self, value))
def __init__(self, value, a):
self.a = a
if __name__ == '__main__':
import pickle
t = test("abs", 5)
print (t)
print(t.a)
wdfh = open("./test.dump", "wb")
pickle.dump(t, wdfh)
wdfh.close()
awfh = open("./test.dump", "rb")
newt = pickle.load(awfh)
awfh.close()
print (t)
print (newt.a)
这个工程只是与Python 2不错,但我有与Python 3以下错误:
Traceback (most recent call last):
File "test.py", line 21, in
newt = pickle.load(awfh)
TypeError: new() takes exactly 3 arguments (2 given)
我不明白是什么是不同的,有什么想法?
您可以包括整个堆栈跟踪? –
你正在阅读蟒蛇3蟒蛇2腌制的东西吗?它们不兼容。 –
不!该脚本在Python3或Python2中执行,因此读/写操作在同一版本中完成。 – user1595929