Python 按用户名查找密码
我已经有了这个密码。现在我想更改代码,当有人输入他的用户名时,他必须填写属于用户名的正确密码Python 按用户名查找密码,python,csv,Python,Csv,我已经有了这个密码。现在我想更改代码,当有人输入他的用户名时,他必须填写属于用户名的正确密码 import csv csvbestand='inlog.csv' csv = open('inlog.csv', 'r').read().split('\n')[1].split(';') username= input("Fill in your username: ") if username == "admin" or userna
import csv
csvbestand='inlog.csv'
csv = open('inlog.csv', 'r').read().split('\n')[1].split(';')
username= input("Fill in your username: ")
if username == "admin" or username in csv:
print("Username found")
break
else:
print("Username not found")
while True:
import csv
csvbestand='inlog.csv'
csv = open('inlog.csv', 'r').read().split('\n')[2].split(';')
password = input("Fill in your password: ")
if password == "admin" or password in csv:
print("Congratiulations")
break
else:
print("Password not right")
因此,当用户名为John时,我只需要属于John的密码作为正确的密码。我假设您的csv如下所示:
user1, hash_pass_u1
user2, hash_pass_u2
user3, hash_pass_u3
...
在解决方案之前只需注意一点。您正在导入Python的CSV模块,但您没有在代码中使用它,这种愚蠢的导入,只需使用它即可
解决办法很简单
导入csv
文件='yourscsv.csv'
发现=错误
用户名=输入“写你的用户名:”
密码\u csv=无
对于openfile,换行符=作为csvfile:
reader=csv.readercsv文件,分隔符=','
对于读取器中的行:
第[0]行是第一个元素,用户名和第[1]行是密码的哈希
如果行[0]==用户名:
密码\u csv=行[1]
找到=真
打破
如果未找到:
打印“用户名不在我们的数据库中。”
尽管如此:
passw=输入“让我知道您的密码:”
hash\u passw=获取\u hashpassw的\u方法
如果hash_passw==password\u csv:
打印“恭喜你,你被记录了。”
打破
其他:
打印“错误的密码,伙计,再试一次。”
这样,您只需读取一次文件,就可以使用CSV模块
我假设CSV的格式如果是另一种格式,则很容易更改此解决方案的实现。如果您需要有关CSV模块的帮助,请参阅此处的文档,以及
解释你做错了什么。
当你做下列句子时:
csv = open('inlog.csv', 'r').read().split('\n')[1].split(';')
在打开文件时,读取所有文件,然后按\n字符分割文件,使用此操作将获得以下列表['user1;pass1';'user2;pass2','user3;pass3',…],最后一步是用[1]选择第二个元素,结果是字符串'user2;pass2'。但是语句并没有在这里结束,还有另一个拆分,它将为您提供列表['user2','pass2']
因此,您正在比较用户名是admin还是在列表['user2','pass2']中。当您尝试比较密码时也会发生同样的情况,但这次您选择了第三个元素
with open('Usernames.txt', 'r') as f:
content = f.readlines()
index = [x for x in range(len(content)) if password in content[x].lower()]
index = (str(index)[1:-1])
if index == '':
print("user not found")
else:
index = (int(index))
with open('passwords.txt', 'r') as d:
d = d.readlines()
f = (d[index]).strip()
if password == f:
print("found password")
如果我想使用单独的filetxt来包含用户名和密码,我会这样做。它抓取行号。用户名打开,然后密码同时打开您至少需要向我们显示csv文件,并解释代码的具体问题。说它不起作用是不够的。你的问题不清楚。好吧!!谢谢成功了!非常感谢你的帮助!