readline()或条件

时间:2017-02-23 14:52:09

标签: python

我的代码出现问题。我创建了一个程序,用于创建帐户,将用户名和密码保存在.txt文件中。然后请求登录并检查用户名和密码是否正确。但每次其他条件都在执行。我正在获得输出"你没有'有任何帐户"。请帮忙。提前致谢。

# MyProgram: Account Verification 

print "\ncreate account:\n"
f = open("data.txt",'w+')

def create():
    user_name = raw_input("Enter username >> ")
    password = raw_input("Enter password >> ")
    confirm = raw_input("Enter password to confirm >> ")
    if password == confirm:
        f.write(user_name+"\n"+password)
        f.close()
        print "Account created"
    else:
        print "\nPassword not matched\n\n Enter details again:\n"
        create()

create() 

new = open("data.txt")
un = new.readline()
pw = new.readline()

new.close()

def login():
    print "\nLogin:\n"
    name = raw_input("Enter username >> ")
    if name == un:
        pas = raw_input("Enter password >> ")
        if pas == pw:
            print "Welcome!"
        else:
            print "Wrong password"
            login()                
    else:
        print "You don't have any account" 

login()     

1 个答案:

答案 0 :(得分:2)

readline包含该行末尾的换行符,因此您可能正在比较,例如"猎头\ n"到" hunter2"。首先尝试剥离空白。

un = new.readline().strip()
pw = new.readline().strip()

或者,最好以某种方式存储/检索您的用户名和密码,而不是将字符串写入纯文本文件并从纯文本文件中读取字符串。对于非常轻量级的应用程序,像picklejson库这样的简单序列化就足够了;但任何真正严重的事情都会从适当的数据库中受益对于其中任何一个,您可能根本不需要担心readline()的行为。