Python - 如何在文本文件中创建一个字典?

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

1
密码安全是否是一个问题,还是这只是一个玩具应用程序? - Nate
不需要任何安全性。 - coding_n00b
1
不要以明文形式存储密码,即使是不安全的应用程序也不行——人们经常会为多个帐户使用相同的密码,你可能会因无意中侵入而负责。阅读有关密码加密的内容:http://docs.python.org/library/crypt.html - Luke
4个回答

7

使用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的"为什么Python Pickle是不安全的"


使用Pickle存储依赖数据并没有问题。数据在Pickle中是相当安全的,但如果从不受信任的来源加载Pickle数据,则您的计算机不安全。 - Rosh Oxymoron

6
我会使用 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)

2

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

还要查看shelve,它会给你更抽象的序列化感觉。


1
>>> 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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接