1. 简介
本篇实现一个可以将数据持久化到文件中存储的账户管理器。
2. 关键技术讲解
1,global关键字,负责制定要引用的变量是全局变量,如果不使用global,将导致在def中定义新的局部变量,而不是引用全局变量
2,数据存储在全局变量accounts中,在程序一开始从文件读取accounts,然后可以进行相应的查询、删除、新增账户,并可以保存到文件。
3. 效果演示
这个界面设计水平在控制台程序中还算可以的,哈哈
============= RESTART: D:/Python/Python3.6.1/AccountManagerV2.py ============= 欢迎使用稍微有一点完善的账户管理器V2版本 ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== 2 可以输入#账户名#密码新增账户 ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== #猫哥#123 添加账户成功! ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== #小蛋#123 添加账户成功! ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== 1 ========账户列表如下 猫哥 小蛋 可以输入@+账户名称,查询账户密码 ======== ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== @猫哥 猫哥账户的密码为:123 ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ==================== 4 已保存到文件 ==================== 请选择操作 1:查看账户列表 2:新增账户 3:删除账户 4:保存到文件 5:退出程序 ====================
4. 源代码
一切尽在注释中
#---------------------------------------------------------#程序信息 #账户管理器 V2版本 文件存储版本 #maoge 2017.6.29 import os,sys #---------------------------------------------------------#变量定义 accounts={} fileName="C:\\account.txt"; #---------------------------------------------------------#函数定义 #界面显示 def show(): print("====================") print("请选择操作") print("1:查看账户列表") print("2:新增账户") print("3:删除账户") print("4:保存到文件") print("5:退出程序") print("====================") return input() #读取文件 def readFile(fileName): if os.path.isfile(fileName)==True:#文件存在 file=open(fileName,"r") global accounts accounts=eval(file.read()) for temp in accounts.keys(): print(temp) file.close(); #写入文件 def writeFile(fileName): file=open(fileName,"w")#w表示写 a表示追加模式 global accounts file.write(str(accounts)); file.close()#读写完毕一定要关闭文件对象 #显示已有账户信息 def showAccounts(): if len(accounts)==0: print("暂无账户") else: print("========账户列表如下") for temp in accounts.keys(): print(temp) print("可以输入@+账户名称,查询账户密码") print("========") #处理无效指令及@指令 def dealAt(user): if user.startswith("@"): str=user.lstrip("@") if str not in accounts.keys(): print("查无此账户!") else: print(str+"账户的密码为:"+accounts[str]) elif user.startswith("$"): str=user.lstrip("$") if str not in accounts.keys(): print("查无此账户!") else: accounts.pop(str) print("删除账户成功!") elif user.startswith("#"): str=user.lstrip("#") username=str.split("#")[0] userpass=str.split("#")[1] accounts[username]=userpass print("添加账户成功!") else: print("无效指令!") #---------------------------------------------------------#主程序 print("欢迎使用稍微有一点完善的账户管理器V2版本") readFile(fileName) while(True): user=show() if user=="5": print("欢迎您下次使用") sys.exit() elif user=="1": showAccounts() elif user=="2": print("可以输入#账户名#密码新增账户") elif user=="3": print("可以输入$账户名删除账户") elif user=="4": writeFile(fileName) print("已保存到文件") else: dealAt(user)