一、前言
在上一小节,我们介绍了文件的基本操作以及数据交换的格式,为了巩固我们上一节文件操作的知识。
在这里我们做一个最基本的案例:用户登录
二、案例:用户登录
许多的应用都涉及数据的存储和使用,作为存储数据的基本形式,文件与应用密不可分。
1.案例分析
用户登录模块可分为管理员和用户登录,若使用该软件或浏览器中,系统就会判断用户是否为首次使用:若是首次使用,则进行初始化,否则进入用户类型选择。若选择管理员登录,则直接登录。如果是用户,那么就给用户提示是否需要注册登录。
根据以上分析,用户管理模块包含以下几个文件
- 标识位文件flag 用于检测是否初次登录,初识数据为0,首次启动程序为将其中数据修改为1
- 管理员账户文件u_root。用于保存管理员的账户信息
- 普通用户账户文件。用于保存普通用户注册的账户。
2.程序设计
- main()程序的入口
- c_flag : 标识位文件更改
- init 信息初始化
- print_login_menu 打印登录菜单
- user_select 用户选择
- root_login 管理员登录
- user_register 用户注册
- user_login 普通用户登录
2.1 main()
该函数是程序的入口,这里需要做的就是判断是否是首次使用该系统,保证读取到的为同一个标志位对象,这里将标志位对象的数值存储到文件flag中,每次启动程序时都先调用main函数 该函数应先打开flag文件,从其中读取数据进行判断,根据表示文件的数据来进行执行不同的分支。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
def main(): flag = open ( "flag" ) word = flag.read() if word = = "0" : print ( "首次登录" ) flag.close() c_flag() #标识为1 init() # 初始化 print_login_menu() #打印登录菜单 user_select() # 选择用户 elif word = = "1" : #不是首次登录 print ( "欢迎回来" ) print_login_menu() user_select() else : print ( "初始化异常..." ) |
2.2 c_flag()
该函数用于修改flag文件中的内容
1
2
3
4
|
def c_flag(): file = open ( "flag" , "w" ) file .write( "1" ) file .close() |
2.3 init()
初次启动系统时,需要创建管理员账户和用户文件
1
2
3
4
5
6
7
|
#3.初始化 创建管理员文件和普通用户目录 def init(): file = open ( "u_root" , "w" ) # 创建并打开管理员账户文件 root = { "username" : "root" , "pwd" : "123456" } file .write( str (root)) file .close() os.mkdir( "users" ) |
2.4 print_login_menu()
该函数用于打印菜单
2.5 user_select()
系统根据用户输入,选择执行不同的流程。
用户输入1 调用root_login函数进行管理员登录等等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
def user_select(): while True : user_type_select = input ( "请输入选择用户类型:" ) if user_type_select = = "1" : root_login() break elif user_type_select = = "2" : while True : select = input ( "是否需要注册?(y/n)" ) if select = = "y" or select = = "Y" : print ( "---用户注册---" ) user_register() # 用户注册 break elif select = = "n" or select = = "N" : print ( "用户登录" ) break else : print ( "输入有误 重新选择" ) user_login() #用户登录 break elif user_type_select = = "0" : return else : print ( "输入有误,请重新选择" ) |
2.6 root_login()
实现管理员登录
1
2
3
4
5
6
7
8
9
10
11
12
13
|
def root_login(): while True : print ( "管理员登录" ) root_user = input ( "请输入账户:" ) root_pwd = input ( "请输入密码" ) file_root = open ( "u_root" ) #只读的方式打开 root = eval (file_root.read()) #读取账户信息 #信息校验 if root_user = = root[ "username" ] and root_pwd = = root[ "pwd" ]: print ( "登录成功" ) break else : print ( "校验失败" ) |
2.7 user_register()
用户注册函数
1
2
3
4
5
6
7
8
9
|
def user_register(): user_id = input ( "请输入用户名:" ) user_pwd = input ( "请输入密码" ) user_name = input ( "请输入昵称" ) user = { "u_id" : user_id, "u_pwd" :user_pwd, "u_name" :user_name} user_path = "./users" + user_id file_user = open (user_path, "w" ) #创建用户文件 file_user.write( str (user)) #写入 file_user.close() #保存关闭 |
2.8 user_login()
实现用户登录函数,校验文件中的数据和输入的数据
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
|
def user_login(): while True : print ( "普通用户登录" ) user_id = input ( "请输入账户名:" ) user_pwd = input ( "请输入密码" ) #获取users目录下的所有文件 user_list = os.listdir( "./users" ) #遍历列表 判断user_id是否在列表中 flag = 0 for user in user_list: if user = = user_id: flag = 1 print ( "登录中...." ) #打开文件 file_name = "./users" + user_id file_user = open (file_name) #获取文件内容 user_info = eval (file_user.read()) if user_pwd = = user_info[ "u_pwd" ]: print ( "登录成功" ) break if flag = = 1 : break elif flag = = 0 : print ( "没有该用户 请先注册" ) break |
到这里用户登录案例就完成了
最后在程序中添加如下代码:
1
2
|
if __name__ = = "__main__" : main() |
3.功能演示
在程序目录中创建flag文件,并在其中输入0,保存退出,执行程序
代码汇总
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
|
import os #3.初始化 创建管理员文件和普通用户目录 def init(): file = open ( "u_root" , "w" ) # 创建并打开管理员账户文件 root = { "username" : "root" , "pwd" : "123456" } file .write( str (root)) file .close() os.mkdir( "users" ) #4.打印登录菜单 def print_login_menu(): print ( "-----用户选择-----" ) print ( "-----1.管理员登录-----" ) print ( "-----2.普通用户登录-----" ) print ( "-----0.退出-----" ) print ( "-" * 30 ) #6.管理员登录 def root_login(): while True : print ( "管理员登录" ) root_user = input ( "请输入账户:" ) root_pwd = input ( "请输入密码" ) file_root = open ( "u_root" ) #只读的方式打开 root = eval (file_root.read()) #读取账户信息 #信息校验 if root_user = = root[ "username" ] and root_pwd = = root[ "pwd" ]: print ( "登录成功" ) break else : print ( "校验失败" ) #7.普通用户注册 在我们的分析当中 没有提前创建好文件用于保存用户信息 所以需要注册 def user_register(): user_id = input ( "请输入账户id:" ) user_pwd = input ( "请输入密码" ) user_name = input ( "请输入用户名" ) user = { "u_id" : user_id, "u_pwd" :user_pwd, "u_name" :user_name} user_path = "./users/" + user_id file_user = open (user_path, "w" ) #创建用户文件 file_user.write( str (user)) #写入 file_user.close() #保存关闭 #8.用户注册完毕之后 登录用户 def user_login(): while True : print ( "普通用户登录" ) user_id = input ( "请输入账户id:" ) user_pwd = input ( "请输入密码" ) #获取users目录下的所有文件 user_list = os.listdir( "./users" ) #遍历列表 判断user_id是否在列表中 flag = 0 for user in user_list: if user = = user_id: flag = 1 print ( "登录中...." ) #打开文件 file_name = "./users/" + user_id file_user = open (file_name) #获取文件内容 user_info = eval (file_user.read()) if user_pwd = = user_info[ "u_pwd" ]: print ( "登录成功" ) break if flag = = 1 : break elif flag = = 0 : print ( "没有该用户 请先注册" ) break def user_select(): while True : user_type_select = input ( "请输入选择用户类型:" ) if user_type_select = = "1" : root_login() break elif user_type_select = = "2" : while True : select = input ( "是否需要注册?(y/n)" ) if select = = "y" or select = = "Y" : print ( "---用户注册---" ) user_register() #用户注册 break elif select = = "n" or select = = "N" : print ( "用户登录" ) break else : print ( "输入有误 重新选择" ) user_login() #用户登录 break elif user_type_select = = "0" : return else : print ( "输入有误,请重新选择" ) #2.用于修改flag文件中内容 初次启动系统被调用 def c_flag(): file = open ( "flag" , "w" ) file .write( "1" ) file .close() # 1.#判断是否为首次使用函数 def main(): flag = open ( "flag" ) word = flag.read() if word = = "0" : print ( "首次登录" ) flag.close() c_flag() #标识为1 init() # 初始化 print_login_menu() #打印登录菜单 user_select() # 选择用户 elif word = = "1" : #不是首次登录 print ( "欢迎回来" ) print_login_menu() user_select() else : print ( "初始化异常..." ) if __name__ = = "__main__" : main() |
总结
到此这篇关于Python文件操作实战案例之用户登录的文章就介绍到这了,更多相关Python用户登录内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/ChengXuTeng/article/details/124540163