[英]To use python pickle or not?
我是第一次玩Python,并且手头上有一个微型项目,我正在玩这个项目以了解这种语言。 我基本上很想知道我是否正在想出一个好的解决方案,或者是否有更好的方法来做到这一点。
有一个CSV文件,该文件基本上列出整数(或应该列出整数),每行大约用逗号分隔三个整数。 我的方法是:
从技术上讲,这很简单,就是“完成工作”。 但是,在阅读了一些建议使用pickle模块读取由整数组成的文件的Python文档之后,我的想法发生了冲突。
显然,如果正在读取readline,则将每一行作为字符串读取。 这意味着整数也将作为字符串读取,并且这里可能会失去精度? Pickle是一个魔术模块,可以将所有内容转换为字符串表示形式,然后可以不转换为原始数据类型表示形式而不会损失精度。
恕我直言,我的程序代码无需使用pickle模块就可以正常工作,但是为了编写出良好的代码,你们有何建议,其背后的原理是什么:
pickle
期望文件采用pickle
模块本身生成的特定格式。 要读取CSV文件,您应该改用csv
模块。
另外,Python支持任意长度的整数,因此无需担心它们是字符串。 转换后,您将获得最后一位数字。
>>> int('1234567890123456789012345678901234567890')
1234567890123456789012345678901234567890L
如果您阅读了pickle
模块的文档,则第一段很好地总结了模块的用途:
pickle
模块实现了一个基本但功能强大的算法,用于对Python对象结构进行序列化和反序列化。
pickle
在大多数情况下旨在将Python对象转储到文件中并再次读取它们。
至于精度,CSV和Python泡菜文件都将数据存储为字符串,因此不会损失精度。
就个人而言,我不会使用泡菜。 它可以防止其他程序读取您的简单数据并使用图形编辑器进行编辑。 如果您有复杂的字典和其他Python对象需要担心,则pickle将是一个很好的存储方法。 但是,在这种情况下,这太过分了。
这完全取决于整数文件的来源以及是否要从其他来源创建/编辑整数文件。
Pickle可以存储/检索python结构,但是它不利于交换来自其他系统甚至可能是python版本的数据。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.