2009-05-17 97 views
3

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

我相信python有一个很容易完成这样的任务的库,但到目前为止,我发现的所有方法似乎都是sl to不驯的,我相信有更好的方法。到目前为止,我已经试过:

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

我真的想避免使用数据库(也许SQLite,但它似乎有点矫枉过正),因为我试图开发这个除了Python以外没有软件的先决条件。

+0

解析和编码“手动”的一些事情并不是什么大不了的事。 – SilentGhost 2009-05-17 19:07:52

+0

你的权利,我并不是说懒惰或固执 - 我对Python很陌生,只是对这种以正确方式做事情的烦人的痴迷。我发现用python,我会花一个小时写出一个方法来解析或验证一些东西,只是为了实现一个内置的方法。 – KeyboardInterrupt 2009-05-17 19:12:30

回答

4

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

+0

谢谢。我没有看到Pickle,所以它可能会或可能不会更好,但是我实现了货架,这很简单,正是我所期待的。 – KeyboardInterrupt 2009-05-17 20:18:07

2

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

是否只有数据才会被Python程序解析?如果不是,那么我会避免pickle等人(搁置和编组),因为他们是Python特有的。 JSON和YAML具有重要的优势,即解析器对于大多数任何语言都可轻松使用。

1

将该溶液在SourceForge仅使用标准的模块:

y_serial.py模块::仓库Python对象的SQLite

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

http://yserial.sourceforge.net

SQLite是不是“杀鸡用牛刀”的话 - 你会惊奇地发现它是多么简单;再加上它解决了更一般的数据持久性问题。