【问题标题】:Python - How do I make a dictionary inside of a text file?Python - 如何在文本文件中制作字典?
【发布时间】:2011-09-27 15:31:43
【问题描述】:

我正在编写一个允许用户创建用户名和密码的程序。如何将其作为字典写入文本文件,然后在需要时检索它?另外,如果有更简单的方法可以做到这一点,我欢迎任何新想法。

【问题讨论】:

  • 是密码安全问题,还是只是一个玩具应用程序?
  • 不需要任何安全性
  • 不要以纯文本形式存储密码,即使对于不安全的应用程序也是如此——人们通常会为多个帐户使用相同的密码,而您最终可能会对意外入侵负责。阅读密码加密:docs.python.org/library/crypt.html

标签: python file dictionary


【解决方案1】:

使用 Python 序列化机制 - pickle

小例子:

>>> import pickle
>>> s = pickle.dumps({'username': 'admin', 'password': '123'})
>>> s
"(dp0\nS'username'\np1\nS'admin'\np2\nsS'password'\np3\nS'123'\np4\ns."

现在您可以轻松地将s 的内容保存到某个文件中。之后您可以阅读并解码:

>>> pickle.loads(s)
{'username': 'admin', 'password': '123'}

但是这种方法不太安全。请勿将其用于危险数据或您依赖的数据。

查看 Nadia Alramli 的 "Why Python Pickle is Insecure"

【讨论】:

  • 存储您依赖 Pickle 的数据没有问题。 Pickle 中的数据非常安全,如果您从不受信任的来源加载 Pickle 数据,则您的计算机不安全。
【解决方案2】:

我会使用json。它非常适合这类事情,并且自 2.6 起就在标准库中。

import json

# write settings
with open('settings.json', 'w') as f:
    f.write(json.dumps(settings))

# load settings1
with open('settings.json', 'r') as f:
    settings = json.load(f)

【讨论】:

    【解决方案3】:

    查看pickle。这是一种将对象序列化为文件,然后检索它的方法。

    也可以看看shelve,它会让你对序列化有更抽象的感觉。

    【讨论】:

      【解决方案4】:
      >>> f = open('pass_file','w')
      >>> d = {"name":"my_name", "pass":"my_pass"}
      >>> import pickle
      >>> pickle.dump(d, f)
      >>> f.close()
      
      
      >>> import pickle
      >>> f = open('pass_file', 'r')
      >>> d = pickle.load(f)
      >>> d
      {'name': 'my_name', 'pass': 'my_pass'}
      >>>
      

      还有一个更快的版本,叫做cPickle

      【讨论】:

        猜你喜欢
        • 2021-10-12
        • 2021-07-16
        • 1970-01-01
        • 1970-01-01
        • 2016-08-13
        • 1970-01-01
        • 2020-03-26
        • 1970-01-01
        • 2017-04-24
        相关资源
        最近更新 更多