TypeError:不能pickle HASH对象? [英] TypeError: can't pickle HASH objects?

查看:110
本文介绍了TypeError:不能pickle HASH对象?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

>>导入md5

>>import md5


>> a = md5.md5 ()
导入pickle
pickle.dumps(a)
>>a=md5.md5()
import pickle
pickle.dumps(a)



Traceback(最近一次调用最后一次):

文件"< stdin>",第1行,在< module>

文件" C:\Python25 \lib \ pickle.py" ;,第1366行,在转储中

Pickler(文件,协议).dump(obj)

文件C:\Python25 \lib \ pickle.py ;,第224行,转储

self.save(obj)

文件C:\Python25 \lib \ pickle.py,第306行,保存

rv = reduce(self.proto)

文件" C:\Python25 \lib \ copy_reg.py",第69行,在_reduce_ex

引发TypeError,不能腌制%s对象 %base .__ name__

TypeError:不能腌制HASH对象


为什么我不能腌制md5对象?是因为md5算法需要

一次读取512位吗?


我需要md5()一些流,暂停(python.exe退出) ),然后恢复

。似乎std模块中的md5和hashlib无法序列化?


我是否必须在这个特殊场合再次实现md5算法?


或者在创建md5对象时是否存在摘要?

Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Python25\lib\pickle.py", line 1366, in dumps
Pickler(file, protocol).dump(obj)
File "C:\Python25\lib\pickle.py", line 224, in dump
self.save(obj)
File "C:\Python25\lib\pickle.py", line 306, in save
rv = reduce(self.proto)
File "C:\Python25\lib\copy_reg.py", line 69, in _reduce_ex
raise TypeError, "can''t pickle %s objects" % base.__name__
TypeError: can''t pickle HASH objects

Why can''t I pickle a md5 object? Is it because md5 algorithm needs to
read 512-bits at a time?

I need to md5() some stream, pause(python.exe quits), and resume
later. It seems that the md5 and hashlib in std module could not be
serialized?

Do I have to implement md5 algorithm again for this special occasion?

Or is there anyway to assige a digest when creating md5 objects?

推荐答案

10月1日,3: 50 * pm,est< electronix ... @ gmail.comwrote:
On Oct 1, 3:50*pm, est <electronix...@gmail.comwrote:

> import md5
a = md5.md5()
import pickle
pickle.dumps(a)
>import md5
a=md5.md5()
import pickle
pickle.dumps(a)



Traceback (最近一次调用最后一次):

*文件"< stdin>",第1行,< module>

*文件" C:\ Python25 \ lib \pickle.py",第1366行,转储中

* * Pickler(文件,协议).dump(obj)

*文件C :\ Python25 \lib \ pickle.py",第224行,转储

* * self.save(obj)

*文件C:\\ Python25 \lib \ pickle.py",第306行,保存

* * rv = reduce(self.proto)

*文件C:\ Python25 \lib \ copy_reg.py",第69行,在_reduce_ex中

* *引发TypeError,不能腌制%s对象 %base .__ name__

TypeError:不能腌制HASH对象


为什么我不能腌制md5对象?是因为md5算法需要

一次读取512位吗?


我需要md5()一些流,暂停(python.exe退出) ),然后恢复

。 *似乎* std模块中的md5和hashlib不能序列化为



我是否必须在这个特殊场合再次实现md5算法?


或者在创建md5对象时是否还有摘要?


Traceback (most recent call last):
* File "<stdin>", line 1, in <module>
* File "C:\Python25\lib\pickle.py", line 1366, in dumps
* * Pickler(file, protocol).dump(obj)
* File "C:\Python25\lib\pickle.py", line 224, in dump
* * self.save(obj)
* File "C:\Python25\lib\pickle.py", line 306, in save
* * rv = reduce(self.proto)
* File "C:\Python25\lib\copy_reg.py", line 69, in _reduce_ex
* * raise TypeError, "can''t pickle %s objects" % base.__name__
TypeError: can''t pickle HASH objects

Why can''t I pickle a md5 object? Is it because md5 algorithm needs to
read 512-bits at a time?

I need to md5() some stream, pause(python.exe quits), and resume
later. *It seems that the md5 and hashlib in *std module could not be
serialized?

Do I have to implement md5 algorithm again for this special occasion?

Or is there anyway to assige a digest when creating md5 objects?



我确定有些常客可以纠正我,如果我错了,但在源代码中查看

,似乎这是你会看到的错误,如果对象没有明确地支持酸洗,或者可能不是由物体组成的
执行。


检查md5和hashlib源文件,似乎它们依赖于
C实现,因此内部状态对Python不敏感。如果你有信心,你可以编写自己的MD5类,它可以使用

方法来转储和恢复状态,但我认为你运气不好br />
来到官方模块。


Mark Sherry

I''m sure some of the regulars can correct me if I''m wrong, but looking
at the source code, it seems that this is the error that you''ll see if
the object doesn''t explicitly support pickling, or possibly isn''t
composed of objects that do.

Examining the md5 and hashlib source files, it seems that they rely on
C implementations, and so have internal states opaque to Python. If
you feel confident, you could write your own MD5 class that would have
methods to dump and restore state, but I think you''re out of luck when
it comes to the official module.

Mark Sherry


10月1日,2:50 * pm,est< electronix ... @ gmail.comwrote:
On Oct 1, 2:50*pm, est <electronix...@gmail.comwrote:

> import md5
a = md5.md5()
导入泡菜
pickle.dumps(a)
>import md5
a=md5.md5()
import pickle
pickle.dumps(a)



Traceback(最近的电话最后一次):

*文件"< stdin>",第1行,在< module>

*文件" C:\Python25 \ ll\pickle.py",第1366行,转储中

* * Pickler(文件,协议).dump(obj)

*文件C: \Python25 \lib \ pickle.py",第224行,转储

* * self.save(obj)

*文件C:\ Python25\lib\pickle.p y,第306行,保存

* * rv = reduce(self.proto)

*文件C:\Python25 \lib \ copy_reg。 py,第69行,在_reduce_ex中

* *引发TypeError,不能腌制%s对象 %base .__ name__

TypeError:不能腌制HASH对象


为什么我不能腌制md5对象?是因为md5算法需要

一次读取512位吗?


我需要md5()一些流,暂停(python.exe退出) ),然后恢复

。 *似乎* std模块中的md5和hashlib不能序列化为



我是否必须在这个特殊场合再次实现md5算法?


或者在创建md5对象时是否还有摘要?


Traceback (most recent call last):
* File "<stdin>", line 1, in <module>
* File "C:\Python25\lib\pickle.py", line 1366, in dumps
* * Pickler(file, protocol).dump(obj)
* File "C:\Python25\lib\pickle.py", line 224, in dump
* * self.save(obj)
* File "C:\Python25\lib\pickle.py", line 306, in save
* * rv = reduce(self.proto)
* File "C:\Python25\lib\copy_reg.py", line 69, in _reduce_ex
* * raise TypeError, "can''t pickle %s objects" % base.__name__
TypeError: can''t pickle HASH objects

Why can''t I pickle a md5 object? Is it because md5 algorithm needs to
read 512-bits at a time?

I need to md5() some stream, pause(python.exe quits), and resume
later. *It seems that the md5 and hashlib in *std module could not be
serialized?

Do I have to implement md5 algorithm again for this special occasion?

Or is there anyway to assige a digest when creating md5 objects?



你能不能点一下流,你到目前为止读过它的部分?

Can you just pickle the stream, the part of it you''ve read so far?


10月2日,11:27 * am,Aaron \Castironpi \ Brady

< castiro ... @ gmail.comwrote:
On Oct 2, 11:27*am, "Aaron \"Castironpi\" Brady"
<castiro...@gmail.comwrote:

10月1日,2:50 * pm,est< electronix ... @ gmail.comwrote:

On Oct 1, 2:50*pm, est <electronix...@gmail.comwrote:



>> import md5

>> a = md5.md5()

>>导入泡菜

>> pickle.dumps(a)
>>import md5
>>a=md5.md5()
>>import pickle
>>pickle.dumps(a)


Traceback(最近一次调用最后一次):

*文件"< stdin>",line 1,在< module>

*文件" C:\Python25 \lib \ pickle.py",第1366行,转储中

* * Pickler (文件,协议).dump(obj)

*文件C:\Python25 \lib\pickle.py,第224行,转储

* * self.save(obj)

*文件C:\Python25 \ lib \ pickle.py,第306行,保存

* * rv = reduce(self.proto)

*文件C:\Python25 \\lib\copy_reg.py" ;,线69,在_reduce_ex

*的*提高类型错误," can''t咸菜%S对象" %base .__ name__

TypeError:不能腌制HASH对象
Traceback (most recent call last):
* File "<stdin>", line 1, in <module>
* File "C:\Python25\lib\pickle.py", line 1366, in dumps
* * Pickler(file, protocol).dump(obj)
* File "C:\Python25\lib\pickle.py", line 224, in dump
* * self.save(obj)
* File "C:\Python25\lib\pickle.py", line 306, in save
* * rv = reduce(self.proto)
* File "C:\Python25\lib\copy_reg.py", line 69, in _reduce_ex
* * raise TypeError, "can''t pickle %s objects" % base.__name__
TypeError: can''t pickle HASH objects


为什么我不能腌制md5宾语?是因为md5算法需要一次读取512位的
吗?
Why can''t I pickle a md5 object? Is it because md5 algorithm needs to
read 512-bits at a time?


我需要md5()一些流,暂停(python.exe退出),然后恢复

。 *似乎* std模块中的md5和hashlib无法序列化为

I need to md5() some stream, pause(python.exe quits), and resume
later. *It seems that the md5 and hashlib in *std module could not be
serialized?


我是否必须在这个特殊场合再次实施md5算法?
Do I have to implement md5 algorithm again for this special occasion?


或者在创建md5对象时是否还有摘要?
Or is there anyway to assige a digest when creating md5 objects?



你能不能点一下流,你到目前为止读过它的部分? - 隐藏引用的文字 -


- 显示引用文字 -


Can you just pickle the stream, the part of it you''ve read so far?- Hide quoted text -

- Show quoted text -



哇。它是千兆大小的文件。我需要流阅读它,md5它。它可能会暂停一段时间。

wow. It''s giga-size file. I need stream reading it, md5 it. It may
break for a while.


这篇关于TypeError:不能pickle HASH对象?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆