Python中readlines()仅匹配TXT文件最后一行的问题求助
问题原因与解决办法
你的问题出在readlines()的读取逻辑上:这个方法会把文件里每行末尾的换行符\n也包含到列表的元素里。比如content[0]实际是'test1\n',而你输入的密码是'test1',两者内容不一样,所以判断不相等;只有最后一行如果没有换行符的话,才会和输入的内容完全匹配。
解决这个问题有两种简单的方式:
方式一:去掉每行的空白字符
读取每行后用strip()方法去掉换行符、空格这类空白字符:
# 用with语句自动管理文件,避免忘记关闭 with open('passwords.txt', "r") as passwords: # 遍历每行,去掉首尾空白后存入列表 content = [line.strip() for line in passwords.readlines()] userpassword = input() x = 0 # 替换成你需要判断的索引 if userpassword == content[x]: print('same') else: print('different')
方式二:用splitlines()分割内容
直接读取整个文件内容,再用splitlines()按换行分割,这个方法会自动忽略换行符:
with open('passwords.txt', "r") as passwords: content = passwords.read().splitlines() userpassword = input() x = 0 if userpassword == content[x]: print('same') else: print('different')
另外建议用with语句操作文件,它会在代码块结束后自动关闭文件,比直接open更安全可靠。
内容的提问来源于stack exchange,提问作者Delvan Green
相关产品推荐
相关产品推荐

