这是我做了什么对一个项目。我有一些数据结构bascially字典的一些方法进行操作的数据。当我救他们盘,我把它们写出来。py文件作为代码,进口时作为一个模块将载入同一数据纳入这样一个数据结构。

这是合理的吗?是否有任何大的缺点?其优点,我看到的是,当我想要操作与保存数据,我可以快速进的模块我需要的。此外,该模块可以用独立于其余的申请,因为你不需要一个单独的分析器或装载功能。

有帮助吗?

解决方案

这是合理的,我做这一切的时候。显然,这是不是你用它来交换数据的格式,所以它不是像保存文件什么的好格式。

但例如,当我做的网站迁移到Plone的,我经常收到关于该网站的数据(如哪些网页应该迁移的列表,或多大的URL列表应该被映射到新的,AOR标签列表)。这些你通常得到的Word OCH Excel格式。另外,数据经常需要按摩一点,我结束了什么所有意图和目的是一个字典映射一个URL到一些其他信息。

当然,我将它保存为CVS,并将其解析为一个字典。而是我通常将它保存为一个字典Python文件。保存代码。

所以,是的,这是合理的,不,这不是你应该对任何类型的保存的文件使用的格式。但是,由于它经常用于跨越边界的结构,像上面的数据。

其他提示

通过实施这种方式,你可以获得方便一些点点,但你付出多种价格为。空间才能保存数据,而且花费的时间都保存和重新加载它,大幅上涨;和您的安全风险是无限的 - 你必须猛烈守护从中加载模块的路径,因为它会提供一个简单的途径对任何攻击者注入他们选择的代码你的用户ID下执行(pickle本身不是坚如磐石,安全的角度来看,但是,相对于该结构,闪耀;。 - )

所有的一切,我喜欢更简单,更传统的安排:可执行代码,住在一个模块中(典型的代码加载路径上,不需要为R / W一旦模块的编译) - 它被加载只有一次,并从已编译的形式。数据在任何合适的多格式,多标准的人(可能包括多语言的,如JSON,CSV,XML,...&C生活在自己的文件(或DB等的部分),如果我想继续打开的选项容易加载来自其它语言在未来那些数据)。

最大的缺点是,它是一个潜在的安全问题,因为很难保证文件不会包含任意代码,这可能是非常糟糕的。所以,如果别人比你有写访问的文件不要用这种方法。

一个合理的选择可能是使用味酸模块,其被专门设计以保存和python结构恢复到磁盘上。

亚历克斯Martelli的回答是绝对的富有见地和我的同意他的意见。然而,我会去一步的步骤和作出的具体建议:使用手机中。

JSON是简单的,蟒蛇的数据结构图进入;有几个标准图书馆和工具的工作结果的方式.的 json 模块在Python3.0和较新的基础是 simplejson, 所以我会用 simplejson 在蟒蛇2.x和 json 在Python3.0和更新。

第二个选择是XML。XML更加复杂,并很难看(或编辑有一个文本编辑),但是有一个巨大的财富的工具来进行验证,过滤、编辑,等等。

此外,如果数据存储和检索的需要,成为在所有重要,可以考虑使用实际数据库。 源码 是了不起的:这是小小的数据库的运行速度非常快,但它是一个真正的实际SQL数据库。我肯定会使用Python奥姆而不是学习SQL互动数据库;我最喜欢的对象为源码会 (小型和简单的),或者从奥姆 Django (你甚至不需要学习如何创建表在SQL!) 然后如果你曾经长大了源码,你可以移动到一个真正的数据库,例如 PostgreSQL.如果你发现自己编写大量的循环搜索过你会保存的数据,尤其是如果你需要强制执行的依赖(例如,如果foo被删除,条必须被删除)考虑要一个数据库。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top