我正在尝试制作短信程序。 程序要求您插入用户名和密码(并验证密码) 现在,在您登录后,您可以写信给其他人或阅读您的文件(在您创建帐户后,程序将创建一个文本文件:.txt,并在第一行保存密码)
如果您想在退出程序后登录,可以,因为程序只需要知道是否有一个带有您插入的用户名的.txt文件,并检查该文件的第一行是否与输入进行比较(密码)。
问题是当页面不清晰时(我写信给那个用户) 我无法登录。我甚至打印第一行,它与我的输入完全匹配。 问题是什么?
我的代码:(只有我读第一行并与输入进行比较的部分)
with open(login_user+'.txt', 'r') as loginFile:
first_line = loginFile.readline()
loginFile.close()
while True:
login_password = raw_input('Password: ') # Taking password
if counter == 4:
print 'You failed 5 times, wait 30 seconds'
counter = 0
sleep(30)
elif login_password == first_line:
print '\nYou\'re connected to ' + login_user
break
else:
print(first_line)
print 'Incorrect password, Try again.'
counter += 1
非常感谢你!
答案 0 :(得分:2)
首先,您无需键入loginFile.close()
,因为使用with
时他就是处理它的人。{/ p>
第二个,修复with
语句与之后两行之间的缩进。
第三次,使用rstrip以删除行尾的空格,就像使用raw_input
时不包含空格一样。
with open(login_user+'.txt', 'r') as loginFile:
first_line = loginFile.readline().rstrip()
string.rstrip(s [,chars])
返回删除了尾随字符的字符串副本。如果是chars 省略或无,删除空格字符。如果给予和 不是没有,字符必须是一个字符串;字符串中的字符将是 从字符串末尾剥离此方法被调用。
答案 1 :(得分:1)
lognFile.readline()
返回包含结尾\n
的字符串; raw_input
OTOH不包括\n
。