如何在字典中添加文件?

2024-06-01 13:25:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个小系统,用户可以用用户名和密码登录。然后,代码将检查同一行中包含用户名和密码的文本文件

我不知道该怎么做。为什么创建一个简单的基于文本文件的登录系统会如此复杂?我相信这是我的哲学是错误的,而不是实际的代码

我使用了以下各种代码:

with open('users/users.txt') as f:
    {int(k): v for line in f for (k, v) in (line.strip().split(None, 1),)}

这些都没有用。我做错什么了


Tags: 代码用户intxt密码for系统错误
1条回答
网友
1楼 · 发布于 2024-06-01 13:25:23

我假设你有一个文本文件的布局如下:

username1 password1
username2 password2
...

根据我从您的问题中收集的信息,您希望解析此文件并将结果存储在字典中(即用户名键映射到密码值)。这类内容更适合存储在数据库中(例如,SQLite内置于Python中),因此您应该明确了解数据库,而不是使用纯文本文件存储数据,尤其是用户帐户

此外,您应该考虑如何使用散列等技术存储敏感信息,如密码,但这是您在进行下一步时可以考虑的问题(我假设这是一个小型学习项目,因此数据库和散列等概念可能超出您当前的范围,但它们绝对值得学习)

至于你的问题,你可以考虑做如下事情:

accounts = dict()

with open('users.txt') as f:
    for account in f:
        (usr, pwd) = account.strip().split()
        accounts[usr] = pwd

print(accounts)

我认为代码的清晰性比把所有内容都放在一行更重要!我展示的代码并不详尽,更像是一个指南。正如我之前所说,我不建议你走这条路,所以一定要研究数据库和正确的密码存储技术

同时,为了确保某种形式的安全性,您可以将密码存储为散列(即pwd将是散列)。然后,当用户将密码传递给系统时,可以计算哈希值并检查哈希值是否相等。这比处理纯文本密码要好。Python有一个内置的哈希模块hashlib。我不是散列方面的专家,但这将是一个不错的起点

相关问题 更多 >