问题标签 [pickle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python:使用`copyreg`为已经有reducer的类型定义reducer
(请记住,我正在使用 Python 3,因此解决方案需要在 Python 3 中运行。)
我想使用该copyreg
模块来教 Python 如何腌制函数。当我尝试这样做时,该_Pickler
对象仍会尝试使用该函数来腌制save_global
函数。(这对于未绑定的方法不起作用,这就是这样做的动机。)
在查看之前,似乎_Pickler
首先尝试在其自身dispatch
中查找要腌制的对象的类型copyreg.dispatch_table
。我不确定这是否是故意的。
我有什么方法可以告诉 Python 使用我提供的 reducer 来腌制函数吗?
python - GAE:ValueError:不安全的字符串泡菜
我无法从 Google App Engine 中提取对象。我正在运行 Windows 7。这是程序:
- 创建一个 CSV,其中一个字段为
pickle.dumps([[('CS', 2110), ('CS', 3300), ('CS', 3140)]])
,或一些类似的参数。
CSV 看起来像这样:
(是的,这些是\n
由 s 生产的pickle.dumps()
)
- 将此文件加载到谷歌应用引擎开发服务器中:
appcfg.py upload_data --config_file="DataLoader.py" --filename="pre_req_data.csv" --kind=Course --url=http://localhost:8083/remote_api "appdir"
课程模式:
数据加载器.py:
- 确认数据加载成功:
尝试解开:
类 MainHandler(webapp.RequestHandler):
/li>观察错误:
回溯(最近一次通话最后):
文件“C:\Program Files\Google\google_appengine\google\appengine\ext\webapp__init__.py”,第 511 行,调用 handler.get(*groups)
文件“main.py”,第 30 行,在 get self.writeOut("%s => %s" % (c.raw_pre_reqs, c.getPreReqs()))
文件“src\Models.py”,第 17 行,在 getPreReqs pickle.loads(str(self.raw_pre_reqs))
文件“C:\Python26\lib\pickle.py”,第 1374 行,加载返回 Unpickler(file).load()
文件“C:\Python26\lib\pickle.py”,第 858 行,在加载调度键中
文件“C:\Python26\lib\pickle.py”,第 966 行,在 load_string 中引发 ValueError,“insecure string pickle”
ValueError:不安全的字符串泡菜
我在这里做错了什么?
python - 确定性密钥序列化
我正在编写一个持久化到磁盘的映射类。我目前只允许str
键,但如果我可以使用更多类型会很好:希望达到任何可散列的(即与 builtin 相同的要求dict
),但更合理的是我会接受字符串、unicode、int 和这些类型的元组。
为此,我想推导出一个确定性的序列化方案。
选项 1 - 酸洗密钥
我的第一个想法是使用pickle(或cPickle)模块来序列化密钥,但我注意到输出pickle
相互cPickle
不匹配:
是否有任何实现/协议组合pickle
对于某些类型是确定性的(例如,只能cPickle
与协议 0 一起使用)?
选项 2 - Repr 和 ast.literal_eval
另一种选择是使用repr
转储和ast.literal_eval
加载。我编写了一个函数来确定给定的密钥是否能在这个过程中存活下来(它允许的类型相当保守):
这种方法的问题是它repr
本身是否对我在这里允许的类型具有确定性。我相信由于 str/unicode 文字的变化,这将无法在 2/3 版本障碍中幸存下来。这也不适用于2**32 - 1 < x < 2**64
在 32 位和 64 位平台之间跳转的整数。是否有任何其他条件(即字符串在同一个解释器中的不同条件下是否以不同的方式序列化)?编辑:我只是想了解它崩溃的条件,不一定要克服它们。
选项 3:自定义代表
另一个可能过大的选择是编写我自己的repr
,它可以消除我知道(或怀疑可能)有问题的 repr 的事情。我只是在这里写了一个例子:http: //gist.github.com/423945
(如果这一切都失败了,那么我可以将键的散列与键和值的泡菜一起存储,然后遍历具有匹配散列的行,以寻找与预期键无关的行,但这确实很复杂其他一些事情,我宁愿不这样做。编辑: 事实证明,内置hash
函数也不是跨平台的确定性。从头开始。)
有什么见解吗?
python - 在动态创建的模型上使用 Django 的 memcache API
所以我有一个创建动态模型的函数。我以与 AuditTrail 非常相似的方式完成此操作(请参阅 django wiki)。
代码示例在这里:
https://gist.github.com/0212845ae00891efe555
有什么办法可以让动态生成的类可以泡菜吗?理想情况下,那不是疯狂的猴子补丁/黑客?
python - 如何在python中保存大的“类数据库”类
我正在用reasonalby 大数据库做一个项目。它不是一个适当的 DB 文件,而是一个格式如下的类:
DataBase.Nodes.Data=[[] for i in range(1,1000)]
fe 这个 DataBase 总共有几千行。第一个问题 - 是我提高效率的方式,还是使用 SQL 或任何其他“适当的”数据库更好,我实际上从未使用过。主要问题 - 我想保存我DataBase class
的所有记录,然后在另一个会话中用 Python 重新打开它。这可能吗,我应该使用什么工具?cPickle - 它似乎只适用于字符串,还有其他吗?
在 matlab 中有一个名为保存工作区的非常有用的功能 - 它将所有变量保存到一个文件中,您可以在另一个会话中打开该文件 - 这在 python 中会有所不同!
python - 将数据保存到文件的 cPickle 类
我在 Python 中有一个大类,它是“类数据库”类。我想将它保存到文件中 - 所有包括数据。
这是输入(显示问题的示例,在脚本数据库中就像 10000 条记录):
这就是我得到的文件:
没有数据,只有定义。我该如何克服。也许将我的数据保存为一个类不是一个好主意?
python - 如何阻止属性在 Python 中被腌制
我正在使用 gnosis.xml.pickle 将我自己的类的对象转换为 xml。该对象被初始化,以便:
但是,当我将对象转储到字符串时,我得到一个异常,指出pickler 遇到了不可腌制的类型(thread.lock)。
有没有办法“标记”记录器属性,以便pickler 知道不要尝试腌制该属性?
python - cPickle ImportError:没有名为 multiarray 的模块
我正在使用 cPickle 将我的数据库保存到文件中。代码如下所示:
它工作正常。我的大多数数据库行都是列表、类 vecor 或类数组数据集的列表。
但是现在当我输入数据时,出现错误:
错误是(在这两种情况下):
有任何想法吗?
PS。现在我已经解决了这个问题,部分说:/我需要更改数组的格式。我试图追踪错误,但我做不到。导致错误的变量是这个(长:)):
cPickle 或 pickle 无法加载它。但是当我使用控制台手动执行时,相同的文件结构( [[ ]] 和所有格式完全相同,值也是 e+00 格式)然后它工作正常??????????? 我勒个去?无论如何,我已经通过更改数据格式解决了这个问题:/
python - 从 zipfile 加载 pickle 文件
由于某种原因,我无法让 cPickle.load 处理 ZipFile.open() 返回的文件类型对象。如果我在 ZipFile.open() 返回的文件类型对象上调用 read(),我可以使用 cPickle.loads。
例子 ....
注意:我不想只压缩泡菜文件,而是压缩许多其他类型的文件。这只是一个例子。