简单的数据存储在Python中

时间:2009-05-17 19:00:21

标签: python file-io csv multidimensional-array fileparsing

我正在寻找一种使用Python将数据存储为平面文件的简单解决方案,这样每行都是一个可以轻松解析的数组的字符串表示。

我确信python有很容易完成这项任务的库,但到目前为止,我发现的所有方法看起来似乎都很草率才能让它工作,我相信有更好的方法。到目前为止,我已经尝试过:

  • array.toFile()方法,但无法弄清楚如何使用嵌套的字符串数组,它似乎适合整数数据。
  • 列表和集合没有内置的toFile方法,因此我不得不手动解析和编码。
  • CSV似乎是一种很好的方法,但这也需要手动解析它,并且不允许我在末尾添加新行 - 所以任何新的调用都会使CSVWriter覆盖文件现有数据。

我真的试图避免使用数据库(也许是SQLite,但它看起来有点矫枉过正),因为我正在尝试开发它,除了Python之外没有任何软件先决条件。

5 个答案:

答案 0 :(得分:10)

除了picklementioned above)之外,还有json(内置于2.6,之前可通过simplejson获得)和marshal。此外,作者所在的reader中还有一个csv module

更新:正如S. Lott在评论中指出的那样,还有YAML,可通过PyYAML获得。

答案 1 :(得分:6)

答案 2 :(得分:4)

文件必须是人类可读的吗?如果没有,shelve真的很容易使用。

答案 3 :(得分:2)

  

我正在寻找一种使用Python将数据存储为平面文件的简单解决方案,这样每行都是一个可以轻松解析的数组的字符串表示。

数据是否只能被Python程序解析?如果没有,那么我会避免pickle et al(搁置和编组),因为它们非常具有Python特性。 JSON和YAML具有重要的优势,即解析器可以轻松地用于大多数语言。

答案 4 :(得分:1)

SourceForge上的此解决方案仅使用标准Python模块:

y_serial.py module ::使用SQLite的仓库Python对象

“序列化+持久性::在几行代码中,将Python对象压缩并注释为SQLite;然后通过关键字按时间顺序检索它们,而不使用任何SQL。最有用的”标准“模块,用于存储无模式数据的数据库。“

http://yserial.sourceforge.net

SQLite根本不是“过度杀戮” - 你会惊讶它是多么简单;加上它解决了更常见的数据持久性问题。