如何使Python永久记住变量或列表?

How to make Python remember permanently a variable or a list? (No Pickle!)

我编写了一个简单的程序,它提示用户输入一些值,然后在用户再次与之交互时将这些值用作某种密码。

如果不使用pickle,如何永久存储该值?一个数据库对于如此少的数据行来说太大了。文本文件对可能的入侵者可能没有那么安全。

是否有一种以相对安全的方式永久存储数据的方法?


有几个选择要考虑,最好的选择取决于项目的范围。它是你和其他人使用的宠物项目,还是一些重要的公共物品?

文本文件

从外观上看,(文本)文件是最好的选择。使用适当的加密散列(SHA256或更好)散列密码,并使用用户名将密码存储在文本文件中。

登录时,检查登录表单中的哈希密码和文本文件中的密码。

根据具体情况,您可能需要查看bcrypt/scrypt进行密码散列。确保文本文件在网页的根目录之外,并且只能由需要它的进程读取/修改/写入。

微型数据库

也可以使用数据库。sqlite的开销非常低。不是写入文本,而是写入一个仍有1个文件大的数据库。

打开和更新文本文件所需的代码可能与sqlite连接一样大。如果您使用某种框架,那么可能有一个ORM,它具有对SQLite连接的需求。如果您想升级到更大的数据库,则非常理想。