【发布时间】:2013-10-30 23:01:43
【问题描述】:
我正在尝试将许多变量存储在一个文件中。我尝试过 JSON、pickle 和 shelve,但它们似乎都只接受一个变量
import shelve
myShelve = shelve.open('my.shelve')
myShelve.update(aasd,
basd,
casd,
dasd,
easd,
fasd,
gasd,
hasd,
iasd,
jasd)
myShelve.close()
还有泡菜
import pickle
with open("vars.txt", "wb") as File:
pickle.dumps(aasd,
basd,
casd,
dasd,
easd,
fasd,
gasd,
hasd,
iasd,
jasd,
File)
我遇到的错误类似于
TypeError: update() takes at most 2 positional arguments (11 given)
和
TypeError: pickle.dumps() takes at most 2 positional argument (11 given)
我不确定除了使用数据库之外是否还有其他存储变量的方法,但这有点超出了我目前的能力。
【问题讨论】:
-
这两种方法都不是这样。
-
使用pickle,你
dump一次一个对象到文件(例如,使用循环并反复调用dump)。然后,您可以一次load一个对象(例如在循环中)。 -
是的,它们都存储一个值:文件的全部内容。所以存储一个字典。
-
pickle的一种解决方法是将所有变量及其关联值存储在单个容器对象中——比如dict——然后保存那个东西。shelve的接口就像一个字典,因此每个变量都必须与其名称一起存储,例如myShelve['aasd'] = aasd、myShelve['basd'] = basd等或myShelve.update({'aasd':aasd, 'basd':basd, etc})。
标签: python python-3.x pickle shelve