输入函数并从文件中删除行

时间:2018-03-13 21:34:45

标签: python python-2.7 file

我正在尝试创建一个模块,并且我需要一个命令来删除指定的用户。我需要帮助它找到用户所在的行。然后删除用户名。这是代码。

def delete_usr(usr):
    file = open("Username.txt","r+")
    count = 0
    userfound = False
    try:
        for user in file.readlines():
            count += 1
            if usr == user.strip():
                userfound = True

BTW我还需要它来删除密码。密码与用户名具有相同的行,并保存在password.txt

2 个答案:

答案 0 :(得分:1)

对您的建议最近的解决方案是:

def delete_usr(usr):
    file = open("Username.txt","r+")
    count = 0
    userfound = False
    for user in file.readlines():
        #print(user.strip())
        count += 1
        if usr == user.strip():
            userfound = True
            #print("yeah")
            #break 
    file.close() 

如果你使用try语句,你会发现一种特殊的错误(例如,键不在字典中),并且还应该写出除语句以捕获错误。 如果使用open(file),最好也使用file.close()。如果您使用with语句,如上例所示,您不需要这样做,因为它是自动完成的。

答案 1 :(得分:0)

这应该可以解决问题(只要用户只在一行上,否则删除break语句):

def delete_usr(usr):

    with open("Username.txt","r") as myfile:
        lines = myfile.readlines()
        for idx, l in enumerate(lines):
            if usr==l.split(':')[0]:
                lines[idx] = ''
                break
    with open("Username.txt","w") as myfile:
        [myfile.write(i) for i in lines]