文件操作实现验证系统

文件操作实现验证系统

在某些情况下,文件是一个非常棒的数据库系统;
我们在使用文件作为数据库使用时,可以使效率更高更快
并且使用文件系统作为数据库,可以在我们应对一些轻量级难题时,节省开发成本

在文件作为数据库时,我们需要把数据的保存格式进行设计
用户名密码以 account:passwd\n 形式保存在文件中(注意行末有换行)


用户注册

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
fp = open('user.txt','a+')#使用a+权限打开文件,避免将之前的内容所覆盖。
reg_time = 1
while True:
is_reg = False#判断是否已经注册的标志位
account = input('请输入你要注册的帐号:')
fp.seek(0,0)#注册帐号之前,首先要确定该帐号没有被注册过。
for buf in fp:
account_buf = buf.split(':')[0]
#我们依次会读取出文件中的每一行数据,按照我们的格式把帐号取出来
if account_buf == account:
is_reg = True
break#跳出循环
#读到最后一行也没有相等,那么说明我们文件中没有这个用户,继续向下,注册密码
#注意,到了这里,文件读写指针通过for循环已经到了末尾。所以不必担心继续写入内容导致覆盖掉之前的
if not is_reg:
passwd1 = input('请输入你要注册的密码:')
passwd2 = input('请再次输入你要注册的密码:')
if passwd2 == passwd1:#两次密码校验
str = '%s:%s\n'%(account,passwd1)#文件中写入帐号密码
fp.write(str)
print('注册成功')
break
else:
print('密码不相同,请再次输入')
continue
else:
if reg_time <= 3:
print('已经被注册,这是你第%d次尝试注册,你还剩余%d次机会'%(reg_time,4-reg_time))
reg_time += 1
else:
print('机会用尽,再见!')
break#超过重新注册次数,退出程序
fp.close()#关闭文件

效果如图
用户注册


用户登陆

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
myfile = open('user.txt','r')#登录时候,只需要读取权限
logintimes = 0
islogin = 1 #该变量等于1的情况下你是没有登录的。
while True:
if islogin == 1:#重试登陆次数最大为3
if logintimes == 3:
print('登录超过次数,再见')
break#跳出主循环
else:
print('这是你第%d次登录,你还剩余%d次机会。'%(logintimes,3-logintimes))
account = input('请输入你的帐号:')
passwd = input('请输入你的密码:')
myfile.seek(0,0)#为了避免因为重复登录而我们的文件描述符已经到了后面,导致之前的无法判断
for buf in myfile:
account_buf = buf.split(':')[0]
passwd_buf = buf.split(':')[1][:-1]#去掉行尾的换行符,同样可以使用str.strip
if account_buf == account and passwd == passwd_buf:
print('登录成功:',account_buf)
islogin = 0#登录成功则修改标志位
break
#但是这里的break只能跳出最内圈循环,想要结束全部,我们可以设置一个标记位;用来确定我们是否已经登录
logintimes += 1
continue
else:
break

效果如图
用户登陆


转载请注明原文地址

您的支持将被用作发行更高质量原创技术!