Python Can';t使用txt文件中的数据执行if语句
我正在尝试制作一个基本的程序,让用户输入用户名和密码,如果它在一个文件中看到一个用户名和密码,它会输出“授予访问权限”,但是当与文件数据进行比较时,即使它们相同,密码也不会匹配 我已经尝试将数据保存密码设置为变量,但是没有成功Python Can';t使用txt文件中的数据执行if语句,python,Python,我正在尝试制作一个基本的程序,让用户输入用户名和密码,如果它在一个文件中看到一个用户名和密码,它会输出“授予访问权限”,但是当与文件数据进行比较时,即使它们相同,密码也不会匹配 我已经尝试将数据保存密码设置为变量,但是没有成功 username = str(input('What is your username')) password = str(input('What is your password')) accountlogin = 0 file = open('login.txt','
username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')
for line in file:
seperate = line.split(',')
print(seperate[0])
if username == seperate[0]:
accountlogin = accountlogin + 1
for line in file:
if password == seperate[1]:
accountlogin = accountl`enter code here`ogin + 1
print(accountlogin)
if accountlogin == 2:
print('Access Granted')
正确的用户名,使其等于3,这样密码位就不能工作了循环两次有两个问题:
- 在第一个循环之后,文件光标位于文件的末尾。没什么可吃的了。你可以回到起点,但是
- 您可以检查用户名是否存在于文件中的任何位置,密码是否存在于文件中的任何位置。相反,您应该确保它们同时存在于同一记录中。所以把这两个条件放在同一个循环中
username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')
for line in file:
seperate = line.split(',')
print(seperate[0])
if username == seperate[0]:
accountlogin = accountlogin + 1
if password == seperate[1]:
accountlogin = accountlogin + 1
print(accountlogin)
if accountlogin == 2:
print('Access Granted')
甚至只是:
username = str(input('What is your username'))
password = str(input('What is your password'))
file = open('login.txt','r')
for line in file:
separate = line.split(',')
print(separate[0])
if username == separate[0] and password == separate[1]:
print('Access Granted')
break
另外,必须注意的是,永远不要将密码存储在纯文本中您可以使用下面的单个循环来实现
username = input('What is your username?')
password = input('What is your password?')
with open('login.txt','r') as f:
for line in f:
user_txt, pass_txt, *_ = line.split(',')
print(user_txt)
if username == user_txt and password == pass_txt:
print('Access Granted')
break
input()。我还使用with
关键字打开login.txt
文件。此线程用于了解有关的更多信息
接下来,我们将拆分行,并从行中将前两个逗号分隔的字符串分别作为用户名和密码,并忽略行中其他逗号分隔的字符串(如果有)。阅读有关调试代码的提示。为什么要使用两个for循环?您可以在第一个循环中检查用户名和密码。你为什么不把用户名和密码编码?