将数据保存为python模块是否合理?

And*_* II 3 python data-persistence dynamic-import

这就是我为一个项目所做的.我有一些基本上是字典的数据结构,其中一些方法对数据进行操作.当我将它们保存到磁盘时,我将它们写为.py文件作为代码,当作为模块导入时,会将相同的数据加载到这样的数据结构中.

这合理吗?有什么大的缺点吗?我看到的优点是,当我想使用保存的数据进行操作时,我可以快速导入我需要的模块.此外,模块可以与应用程序的其余部分分开使用,因为您不需要单独的解析器或加载器功能.

Ale*_*lli 7

通过这种方式操作,您可能会获得一些便利,但您需要付出多种代价.保存数据所需的空间以及保存和重新加载数据所需的时间大幅增加; 并且您的安全风险是无限的 - 您必须严格保护重新加载模块的路径,因为它将为任何攻击者提供一个简单的途径来注入他们选择的代码以在您的用户ID下执行(pickle本身并不坚如磐石,安全方面,但是,与这种安排相比,它闪耀;-).

总而言之,我更喜欢更简单和更传统的安排:可执行代码存在于一个模块中(在典型的代码加载路径上,一旦模块被编译就不需要R/W) - 它只被加载一次并且从已经编译的表格.数据存在于他们自己的文件(或DB等部分)中,可以是任何一种合适的格式,主要是标准格式(可能包括多语言文件,如JSON,CSV,XML,......&c,如果我想保留的话)该选项可以在将来轻松加载来自其他语言的数据).