用户名和密码python程序使用字典并写入文件如何在不重复的情况下完成

时间:2017-08-01 19:55:59

标签: python dictionary file-io login

首先,我是python的初学者,所以除非必要,否则请不要使用任何高级答案。我正在编写一个需要用户名和密码的登录程序,我正在尝试这样做以便它读取一个文件将其添加到字典然后人们登录或创建新的登录并将新的登录(如果有的话)写入当我重新运行程序时,它的文件然后被读取并写回到字典中...我遇到的问题是,当创建新的登录时,它将新的登录名写入文件但同时它将字典中的其他登录名再次写入文件。有没有办法确保用户名和通行证不会重复?以下是文本文件的示例:

joe  dw < ---- old login and pass
joe  dw <---- repeated login and pass
jack  dw <--- new login and pass

这是我的代码抱歉,如果它看起来令人困惑,或者如果你生气,我没有多少评论我只是新来评论我所做的一切:

login = {} 
def fileToDict():
    '''this reads the file and writes it into the dictionary'''
    with open("login.txt", "r") as f:
        for line in f:
            (key, val) = line.split()
            login[key] = val

def addUser(username, password):
    '''basic user and login function'''
    if username in login:
        print("Username already exists")
    else:
        login[username] = password
        dictToFile()
def checkUser(username, password):
    '''checks where the username and password is in the dictionary'''
    if username in login:
        if password == login[username]:
            return True
        else:
            return False
    else:
        return False
def dictToFile():
    '''this writes the current dictionary into a file'''
    with open("login.txt", "a+") as f:
        for k, v in login.items():
            line = '{}  {}'.format(k, v) 
            print(line, file=f)        
fileToDict()
addUser("john","dw")
print(login)

1 个答案:

答案 0 :(得分:1)

dictToFile中,您打开了文件以追加("a+"),添加到文件的末尾。如果要覆盖已存在的内容,请使用"w"