3

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

我确信 python 有一个库可以轻松完成这样的任务,但到目前为止,我发现的所有方法似乎都很难让它工作,我相信有更好的方法。到目前为止,我已经尝试过:

  • array.toFile() 方法,但不知道如何让它与嵌套的字符串数组一起工作,它似乎面向整数数据。
  • 列表和集合没有内置的 toFile 方法,因此我必须手动对其进行解析和编码。
  • CSV 似乎是一种不错的方法,但这也需要手动解析它,并且不允许我在末尾简单地附加新行 - 因此 CSVWriter 的任何新调用都会覆盖文件现有数据。

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

4

5 回答 5

10

除了pickle上面提到的),还有json(内置于 2.6,在此之前通过simplejsonmarshal可用),和. 此外,作者reader所在的同一csv模块中有一个。

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

于 2009-05-17T19:51:09.873 回答
6

http://docs.python.org/library/pickle.html

于 2009-05-17T19:13:10.653 回答
4

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

于 2009-05-17T19:15:45.530 回答
2

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

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

于 2009-05-17T21:16:12.843 回答
1

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

y_serial.py 模块 :: 使用 SQLite 存储 Python 对象

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

http://yserial.sourceforge.net

SQLite 一点也不“矫枉过正”——你会惊讶于它是多么的简单;此外,它还解决了更一般的数据持久性问题。

于 2009-09-13T05:29:56.700 回答