我是python的新手,刚刚开始学习,我想创建一个简单的脚本来运行程序,通过验证用户,有效与否... 主要问题,我面临的是我有一个文件“用户”,其中我提到了所有有效用户, 所以我需要一个程序搜索用户在“用户”文件中给出的输入,如果找到则继续,否则“验证失败” 我试过的是......
fp = open(“users”,“r”)
表示fp.readlines()中的行:
if "michel" in line : # user michel is available in users file
print "true"
else :
print "false"
它有效,打印'true'因为michel在文件中..但是当用户输入“mic”时...也打印出真......所以解决方案是什么......
答案 0 :(得分:1)
首先,出于安全考虑,最好使用os.getlogin()来确定用户的登录名,而不是提示用户输入用户名。这将至少保证用户通过某种认证机制登录到达系统,这意味着他们已经知道并且已经知道了。一致的用户名。
所以如果你想把它变成一个函数你可以写:
def is_valid_user(username):
fp = open("users", "r")
for line in fp.readlines():
if username in line:
fp.close()
return True
fp.close()
return False
然后您可以使用以下方法调用该函数:
import os
is_valid = is_valid_user(os.getlogin())
if is_valid:
print("valid user")
else:
print("invalid user")
现在和将来增加安全性的一些建议:
":" + username + ":" in line
,以避免在用户“jones”当前的情况下出现误报登录并且用户名“jonesj”在您的“用户”文件中,但“jones”不是,并且您错误地将“jones”标识为授权用户(因为“jones”是字符串“jonesj”的子集)。 答案 1 :(得分:0)
您可以使用re确保整行匹配:
import re
fp = open("users", "r")
for line in fp.readlines():
if re.match('^michel$', line, re.I):
print "true"
else :
print "false"