[英]Is something like ConfigParser appropriate for saving state (key, value) between runs?
我想在Python程序的運行之間保存一組鍵值對(字符串,整數),在后續運行時重新加載它們,並將更改寫入下次運行時可用。
我不認為這些數據是配置文件,但它很適合ConfigParser功能。 我只需要兩個[部分]。 它只有幾百對而且非常簡單,所以我認為不需要做一個真正的數據庫。
以這種方式使用ConfigParser是否合適? 我也考慮過使用Perl和XML :: Simple。 那個怎么樣? 有沒有辦法在沒有Python或Perl的bash中執行此操作?
好吧,你有更好的選擇。 例如,您可以使用pickle或json格式。 Pickle序列化模塊非常易於使用。
import cPickle
cPickle.dump(obj, open('save.p', 'wb'))
obj = cPickle.load(open('save.p', 'rb'))
格式不是人類可讀的,並且unpickling對於錯誤或惡意構造的數據是不安全的。 您不應該取消不受信任的數據。
如果您使用的是python 2.6,則會有一個名為json的內置模塊。 它就像泡菜一樣簡單:
import json
encoded = json.dumps(obj)
obj = json.loads(encoded)
Json格式是人類可讀的,與python中的字典字符串表示非常相似。 而且沒有像泡菜這樣的安全問題。
如果您使用的是早期版本的python,則可以使用simplejson 。
對我來說, PyYAML適合這類事情。 我之前習慣使用pickle或ConfigParser。
ConfigParser是一種很好的方法。 還有其他方法(已經提到的json和cPickle模塊可能有用)也很好,這取決於你是想要文本文件還是二進制文件,以及你是否希望代碼只在舊版本的Python中工作。
您可能希望在您選擇的方式之上擁有一個精簡的抽象層,以便更容易改變主意。
重新做在bash:如果你的字符串是有效標識符,你可以使用環境變量和env
。
如果可以按鍵更新狀態鍵,則任何DBM數據庫都可以正常工作。 如果您需要真正的高性能和緊湊型存儲,那么Tokyo Cabinet - http://tokyocabinet.sourceforge.net/就是很酷的玩具。
如果你想一次保存和加載整個東西(可能保留舊版本或其他一些)並且沒有太多數據,那么只需使用JSON。 使用它比使用XML要好得多。 我不知道JSON實現是如何在Python中實現的,但在Perl中,JSON :: XS模塊的速度非常快。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.