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

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

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

我真的试图避免使用数据库(也许是 SQLite,但它似乎有点过大),因为我试图开发它,除了 Python 之外没有任何软件先决条件。

有帮助吗?

解决方案

文件必须是人类可读的吗?如果不, 搁置 真的很容易使用。

其他提示

此外 pickle (上文提到的), 有 json (内置于 2.6,可通过 简单的json 在此之前),以及 marshal. 。另外,还有一个 reader 在相同的 csv 模块 作家在。

更新:作为S。Lott 在评论中指出,还有 YAML,可通过 PyYAML, 等。

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

数据只能由 Python 程序解析吗?如果没有,那么我会避免使用pickle等(shelve和marshal),因为它们是Python特定的。JSON 和 YAML 的重要优点是解析器可轻松用于大多数任何语言。

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

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

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

http://yserial.sourceforge.net

SQLite 一点也不“杀伤力大”——你会惊讶于它是多么简单;另外它还解决了更一般的数据持久性问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top