1
3
这是合理的,我一直这样做。显然,它不是用于交换数据的格式,因此对于类似保存文件的任何内容来说,它都不是一种好的格式。 但是,例如,当我将网站迁移到plone时,我经常会得到关于该站点的数据(例如应该迁移哪些页面的列表,或者应该将旧的URL映射到新的URL的列表,或者标记列表)。这些文件通常采用Word OCH Excel格式。此外,数据通常需要进行一点按摩,最终我得到了一个字典,它将一个URL映射到其他一些信息。 当然,我 能够 将其保存为cvs,并将其解析为字典。但是我通常用字典将其保存为python文件。保存代码。 所以,是的,这是合理的,不,这不是您应该用于任何类型的保存文件的格式。但是,它通常用于跨越边界到配置的数据,如上面所述。 |
2
7
通过这种方式,你可以获得一些便利,但你为此付出了很多代价。保存数据所需的空间,以及保存和重新加载数据所需的时间都会大大增加;而且您的安全暴露是无限制的——您必须严格保护您重新加载模块的路径,因为这将为任何攻击者提供一条简单的途径,让其在您的userid下注入自己选择的代码。(
总之,我更喜欢更简单和更传统的安排:可执行代码存在于一个模块中(在一个典型的代码加载路径上,在模块编译后不需要R/W),它只加载一次,并且来自一个已经编译的表单。数据以许多合适的格式存在于自己的文件(或数据库的一部分等)中,大多数是标准格式(可能包括多语言格式,如json、csv、xml等)。&c,如果我想保持选项的开放性,以便将来从其他语言轻松加载这些数据)。 |
3
3
最大的缺点是这是一个潜在的安全问题,因为很难保证文件不包含任意代码,这可能非常糟糕。因此,如果您以外的任何人对这些文件具有写访问权限,请不要使用这种方法。 |
4
3
一个合理的选择可能是使用 Pickle 模块,专门设计用于将python结构保存和恢复到磁盘。 |
5
3
亚历克斯·马泰利的回答非常有洞察力,我同意他的观点。不过,我将进一步提出一个具体的建议:使用JSON。
JSON很简单,而且Python的数据结构可以很好地映射到JSON中;有几个标准库和工具可以使用JSON。这个
第二个选择是XML。XML更复杂,更难仅仅查看(或者只使用文本编辑器进行编辑),但是有大量的工具来验证它、过滤它、编辑它等等。 另外,如果您的数据存储和检索需求变得非常重要,那么考虑使用实际的数据库。 SQLite 非常好:它很小,对于小型数据库运行非常快,但它是真正的SQL数据库。我肯定会使用Python ORM而不是学习SQL来与数据库交互;我最喜欢的SQLite ORM是 Autumn (小而简单),或来自 Django (您甚至不需要学习如何在SQL中创建表!)如果超过sqlite,就可以向上移动到真正的数据库,例如 PostgreSQL .如果您发现自己编写了许多搜索已保存数据的循环,特别是如果需要强制执行依赖项(例如,如果删除foo,则也必须删除bar),请考虑转到数据库。 |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |