从文件[python]中选择一个WHOLE字符串

时间:2017-03-25 12:20:15

标签: python python-3.x file

我在这里遇到的问题是,虽然程序没有直接的语法错误,但如果我只输入部分密码(例如密码=密码,但我的输入可能只是"传递")。

所以,我在这里要求的是,是如何在文件中选择整个字符串。

是否使用split使程序允许通过正确密码的部分副本?

或者是什么?

with open("users.txt") as f:
    for i, l in enumerate(f):
        l.split(":")
        l.strip()
        if username in l:
            print("you exist...") 
            password= input("please input your password ")
            while password not in l:
                password=input("Enter your password")   

该文件如下所示:

me:password123 
user1:12345678 
user2:12345678

左栏是用户名,右栏是密码

3 个答案:

答案 0 :(得分:1)

string.stripstring.split都不是inplace操作,你需要像这样捕获返回的参数:

username = input("Username: ")

with open("users.txt") as f:
    for l in f:
        l = l.strip() # save the returned value
        uname, upass = l.split(":") # split at : and assign it to variables           
        if username == uname: # check if the usernames match
            print("you exist...") 
            password= input("please input your password ")

            while password != upass: # check to see if the password match
                password=input("Enter your password") 

            break # break out of the for loop

仍然可以做出很多改进,我会留给你们(这是故意的)。虽然还有一些错误需要修复,例如:如果用户名或密码中有冒号“:”,它也会被拆分。

答案 1 :(得分:1)

我会使用字典存储密码数据,用户名作为密钥,密码作为值。当然,在真实的程序中,你应该将密码保存为纯文本!

import sys

passwords = {}

with open("users.txt") as f:
    for line in f:
        name, word = line.split(":")
        passwords[name.strip()] = word.strip()

username = input("Please enter your username: ")
if username in passwords:
    print("you exist...")
    real_password = passwords[username]
    password = ''
    while password != real_password:
        password = input("Please enter your password: ")
else:
    print("you don't exist")
    sys.exit()

print('Welcome,', username)

我们知道" users.txt"的每一行都有两个项目,因此我们可以使用line.split(":")来构建包含这两个字符串的列表。我们可以使用元组赋值将这些字符串分配给单独的变量:

name, word = line.split(":")

但是,这些字符串的两边可能都有不需要的空格,因此在将它们放入.strip()字典之前,我们需要在每个字符串上调用passwords方法。

答案 2 :(得分:0)

username = str(input("Username: "))
password = str(input("Password: "))

f = open("test.txt", "r").read().splitlines()
for index in range(len(f) - 1):
    if f[index] == username and f[index + 1] == password:
        print("Login made")