[英]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.