我正在尝试通过登录,但是尽管付出了所有努力,但还是行不通。花了2个小时寻找解决方案,并实际重写了该程序5次。需要你们的帮助。是的,我知道fh.seek(0)垃圾邮件是虚假的,但我仍然是新手
我需要它来比较我的输入登录名,并将其传递给文本文件中的登录名,如果它们相似,则可以编写“访问权限”。如果不是,则拒绝访问。
问题是,即使我让程序将输入和文本文件信息都写在一起以进行比较,也一直说它们是不同的。他们是相似的。我试图弄乱退格,因为我的程序出于某种原因一直在向输入中添加退格,因此我向文本文件中添加了退格,但仍然不正确。
a = input('Login - ')
b = input('Pass - ')
with open('C:\\Users\\user\\Desktop\\text.txt', 'r') as fh:
login = (fh.readlines()[0])
print(login, a)
fh.seek(0)
passw = (fh.readlines()[1])
print(passw, b)
fh.seek(0)
if (a == login) and (b == passw):
fh.seek(0)
print(fh.readlines()[2])
else:
fh.seek(0)
print(fh.readlines()[3])
文本文件本身(没有点ofc,我只是不知道如何在没有em的情况下制作列表):
readlines
保留每行的终止换行符。如果您打印出结果readlines
:
lines = fh.readlines()
print(lines)
['[email protected]\n', 'asdasd\n', 'Access granted.\n', 'Access denied.']
注意"\n"
s。除非用户也输入了这些内容,否则两者将不匹配。
您可以使用string删除它们rstrip
:
if a == login.rstrip("\n") and b == passw.rstrip("\n"):
. . .
如有疑问,请打印出数据以验证您使用的数据。
最重要的是,我将提出更多建议:
您readlines
一遍又一遍地打电话是必须的seek
,而且会比必要的慢。
另外,作为第一个结果,您可以使文件打开的时间长于所需的时间。
我将其更改为:
a = input('Login - ')
b = input('Pass - ')
with open('C:\\Users\\user\\Desktop\\text.txt', 'r') as fh:
lines = fh.readlines()
# File gets closed before this is reached
login = lines[0]
passw = lines[1]
if a == login.rstrip("\n") and b == passw.rstrip("\n"):
print(lines[2])
else:
print(lines[3])
或者,使用上的拆包lines
,您可以摆脱混乱的lines[0]
部分:
a = input('Login - ')
b = input('Pass - ')
with open('C:\\Users\\user\\Desktop\\text.txt', 'r') as fh:
lines = fh.readlines()
# Unpack lines into multiple variables
valid_user, valid_pass, granted_msg, error_msg = lines
if a == valid_user.rstrip("\n") and b == valid_pass.rstrip("\n"):
print(granted_msg)
else:
print(error_msg)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句