【问题标题】:Python: Append dictionary in another filePython:在另一个文件中附加字典
【发布时间】:2013-08-09 06:44:26
【问题描述】:

我正在开发一个程序,我需要从另一个文件访问字典,我知道该怎么做。我还需要能够附加同一个字典并将其以当前形式保存到另一个文件.

有没有办法做到这一点?

编辑:

该程序要求您登录。您可以创建一个帐户,当您这样做时,它需要保存您在字典中输入的用户名:密码。按照我的方式,您可以创建一个帐户,但是一旦您退出程序,该帐户就会被删除。

【问题讨论】:

  • “保存到另一个文件”是什么意思? dict1.update(**dict2) 不够吗?你真的想序列化字典并将其保存到文件中吗?请详细说明。
  • @Ludo dict1.update(**dict2) 完全没用,效率低下,可能会导致具有足够大字典的堆栈溢出,并且依赖于可能阻止它在未来工作的实现细节。你应该做简单的dict1.update(dict2).
  • @Bakuriu 你有那个声明的参考吗?
  • @Ludo 在 python3 中,如果字典没有字符串作为键,您将收到 TypeError: keyword arguments must be strings,从而使该方法在许多情况下完全无用。
  • @Bakuriu 这对我来说是新的(但不可否认,我主要使用 Python 2.x)。也有点令人惊讶,我不直接理解为什么这个设计决定是为 Python 3 做出的

标签: python file dictionary append


【解决方案1】:

您可以使用 python 中的pickle 模块存储和检索数据结构,该模块提供对象序列化。

保存字典

import pickle
some_dict = {'this':1,'is':2,'an':3,'example':4}

with open('saved_dict.pkl','w') as pickle_out:
    pickle.dump(some_dict,pickle_out)

加载字典

with open('saved_dict.pkl.'r') as pickle_in:
    that_dict_again = pickle.load(pickle_in)

【讨论】:

  • 我试过这个:self.accounts = pickle.load(open('logins.pkl','rb')) 它给了我这个错误: FileNotFoundError: [Errno 2] No such file or directory : 'logins.p' 我不知道为什么,因为它在 IDLE 中工作
  • 相对于您正在运行的脚本,logins.pkl 文件的位置是否正确?
  • 什么意思?在同一个文件夹中?
  • 基本上,是的 - 如果您打开'picklefiles/logins.pkl',它将位于名为picklefiles 的文件夹中,该文件夹与您的脚本位于同一文件夹中。这是一个相对路径,而不是绝对路径。
猜你喜欢
  • 1970-01-01
  • 2021-08-31
  • 1970-01-01
  • 2015-02-08
  • 1970-01-01
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
  • 2015-10-22
相关资源
最近更新 更多