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文件,并解释代码的具体问题。说它不起作用是不够的。你的问题不清楚。好吧!!谢谢成功了!非常感谢你的帮助!