首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用python >= 3.6来泡菜zipfile.ZipFile

使用python >= 3.6来泡菜zipfile.ZipFile
EN

Stack Overflow用户
提问于 2017-06-11 23:30:48
回答 0查看 726关注 0票数 1

我遇到了一些代码,这些代码在python3.6中不再有效,但在以前的所有版本中都表现良好。我发现问题实际上是类中某个包含ZipFile的字段。下面是一个引发错误的简短程序:

代码语言:javascript
复制
from pickle import dumps
import io
import zipfile

raw = b""

foo = zipfile.ZipFile(io.BytesIO(raw), mode="w")
dumps(foo)

我得到了这个错误:

代码语言:javascript
复制
Traceback (most recent call last):
  File "bla.py", line 8, in <module>
    dumps(foo)
TypeError: can't pickle _thread.RLock objects

因此,测试程序可以更短:

代码语言:javascript
复制
from pickle import dumps
import threading

dumps(threading.RLock())

我比较了Python3.5和3.6的zipfile.py,但在ZipFile_lock字段方面没有发现任何差异,所以看起来threading模块有变化-但在threading.py中版本之间也没有明显的变化。

为什么它不再是可拾取的?在我可以腌制ZipFile之前,我需要做些什么吗?

编辑:好的在搜索了一段时间后,我偶然发现了这个python bug跟踪器条目:https://bugs.python.org/msg284751,所以在python中ZipFile是可拾取的<3.6实际上是bug……我想我现在需要修改很多代码……

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44485539

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档