将 python 中的字符串添加到文本文件,然后在 while 循环中验证行

Adding strings from python to text file and then verify lines in while loop

我是编码新手,仍在学习 Python。 我有一个任务,我必须将 Python 中的行上传到文本文件,然后稍后在代码中验证这些行,例如我必须输入用户名和用户密码,然后将 [user_name、user_pass] 添加到文本文件中。 我的问题是,当我尝试验证线路时,发生了两件事之一。在我为该行添加拆分功能后,例如verified_user, verified_password = line.split(", ") 它 运行s 变成了一个错误,指出我没有足够的值来满足请求,例如 2 expected, 1 made .如果我更改拆分输入并且它确实 运行,验证循环表明我的输入与字符串中的任何行都不匹配。

如果我只将信息添加到文本文件,一切都会起作用。但是当我通过 Python 中的附录操作添加时,它不再有效。

这是我目前所拥有的:

user_list = []
all_names_entered = "no"

while all_names_entered == "no":

   user_name = input("Enter user name: ")
   user_pass = input("Enter password: ")
   user_list.append(user_name + ", " + user_pass)

    while True:
    all_names_entered = input("All users entered?: ")
      if all_names_entered in ['yes','no']:
        break
     else:
        print( 'please answer with yes or no' )
for items in user_list:
with open('user.txt', 'a') as file:
    file.write(f"{user_name}, {user_pass}\n")
print (user_list)

file.close()

下一段内容如下:

   user_file = open("user.txt", "r+")
   login = False

while login == False:
   username = input("Enter user name: ")
   password = input("Enter user password: ")

for line in user_file:
    other = line.strip()
    valid_user, valid_password = line.split(", ")
if username == valid_user and password == valid_password:
    login = True
    print ("You have successfully logged in")
    break
else:
    print("You have entered incorrect detail. Please try again")

user_file.seek(0)
    
user_file.close()
  • 首先,缩进在Python中很重要。
  • 其次,如果用户输入 'no'.
  • ,你应该循环
  • 利用在每个 for 循环中初始化的 item
  • 您初始化了 other 但它从未被使用过。

写入文件的代码如下:

user_list = []
all_names_entered = "no"

while all_names_entered == "no":
    user_name = input("Enter user name: ")
    user_pass = input("Enter password: ")
    user_list.append(user_name + ", " + user_pass)
    query_all_names_entered = True
    while query_all_names_entered:
        all_names_entered = input("All users entered?: ")
        if all_names_entered == 'yes':
            query_all_names_entered = False
            break
        elif all_names_entered == 'no':
            query_all_names_entered = False
            continue
        else:
            print('Please answer with yes or no')
            all_names_entered = "no"
with open('user.txt', 'a') as file:
    for item in user_list:
        file.write(f"{item}\n")
print (user_list)

file.close()

下面是读取文件登录:

user_file = open("user.txt", "r+")
login = False
lines = user_file.readlines()

while login == False:
    username = input("Enter user name: ")
    password = input("Enter user password: ")

    for line in lines:
        valid_user, valid_password = line.strip().split(", ")
        if username == valid_user and password == valid_password:
            login = True
            print ("You have successfully logged in")
            break
    if login == False: print ("You have entered incorrect detail. Please try again")

user_file.close()