Python - 如何在文本文件中制作字典?
Posted
技术标签:
【中文标题】Python - 如何在文本文件中制作字典?【英文标题】:Python - How do I make a dictionary inside of a text file? 【发布时间】:2011-09-27 15:31:43 【问题描述】:我正在编写一个允许用户创建用户名和密码的程序。如何将其作为字典写入文本文件,然后在需要时检索它?另外,如果有更简单的方法可以做到这一点,我欢迎任何新想法。
【问题讨论】:
是密码安全问题,还是只是一个玩具应用程序? 不需要任何安全性 不要以纯文本形式存储密码,即使对于不安全的应用程序也是如此——人们通常会为多个帐户使用相同的密码,而您最终可能会对意外入侵负责。阅读密码加密:docs.python.org/library/crypt.html 【参考方案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。
【讨论】:
以上是关于Python - 如何在文本文件中制作字典?的主要内容,如果未能解决你的问题,请参考以下文章