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 - 如何在文本文件中制作字典?的主要内容,如果未能解决你的问题,请参考以下文章

如何运行文本文档编程命令

如何利用Python给文本文件中的每个人的姓名加上拼音?

python如何写入文本的最末行?

QT中怎样读取中文文本文件!

如何在 Python 中对大文本文件流进行过滤和排序

求Python程序,将固定文本文件中的文本按某字符串分开,输出几个新的文本文件