2009-05-17 69 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是不是「殺雞用牛刀」的話 - 你會驚奇地發現它是多麼簡單;再加上它解決了更一般的數據持久性問題。