day 5 名片管理系统-文件版
1.添加__name__ == '__main__'
if __name__ == "__main__": #添加__name__变量#调用主函数main()
2.添加6功能,保存到文件
def save_2_file():'''完成保存到文件的功能'''f = open("backup.data",'w') f.write(str(card_infors)) #文件只能保存str字符串类型, #TypeError: write() argument must be str, not listf.close()
3.保存文件的内容
vim backup.data #### 第1种,直接把list转换成str存入 文件 [{'qq': 'dfas', 'addr': 'ds', 'name': 'aa', 'age': 'adf'}, {'qq': 'dfas', 'addr': 'fd', 'name': 'b', 'age': 'dsfa'}]##### 第2种,好看 不推荐aa,3434,3434,123bb,43,43,34c,2334,43,43#保存的数据文件,不是为了用户查看的,怎么简单怎么来
4.程序执行开始,读取文件
1)版本1:没有数据
def load_infor():'''完成对文件内数据的加载'''f = open("backup.data","r")card_infor = list(f.read()) #字符串str转换成list列表格式f.close()
def main():'''完成对整个程序的控制'''#恢复加载之前的文件内容到程序中 load_infors()# 1.打印功能信息print_menu()
### 运行结果##### python3 08-读取文件.py **************************************************名片管理系统 V3 1:添加一个名片 2:删除一个名片 3:修改一个名片 4:查询一个名片 5:显示所有 6:保存 7:退出系统 ************************************************** 请输入你要的功能:5 姓名 年龄 qq号 地址请输入你要的功能:^Z
2)版本2:global全局变量,eval()
请输入你要的功能:5 姓名 年龄 qq号 地址 aa sfd dsaf df bb daf fda dfs
def load_infor():'''完成对文件内数据的加载'''global card_infors #声明全局变量f = open("backup.data","r")card_infors = eval(f.read()) ## eval能将字符串变成之前的类型f.close()
5.异常处理:没有数据文件创建,有文件读取
### 没有备份文件程序出错 rm -rf backup.data python3 08-读取文件.py Traceback (most recent call last):File "08-读取文件.py", line 110, in <module>main()File "08-读取文件.py", line 74, in mainload_infor()File "08-读取文件.py", line 66, in load_inforf = open("backup.data","r") FileNotFoundError: [Errno 2] No such file or directory: 'backup.data'
def load_infor():'''完成对文件内数据的加载'''global card_inforstry:f = open("backup.data","r")card_infors = eval(f.read())f.close()except Exception: ###出现异常忽略pass
6.完整版本
#定义一个新的list列表,用来存储名片 card_infors = []def print_menu():"""完成打印功能"""print("*"*50)print("\t名片管理系统 V3\t")print("1:添加一个名片")print("2:删除一个名片")print("3:修改一个名片")print("4:查询一个名片")print("5:显示所有")print("6:保存")print("7:退出系统")print("*"*50)def add_new_card_infor():"""完成添加新名片功能"""new_name = input("你要添加的姓名:")new_age = input("你要添加的年龄:")new_qq = input("你要添加的qq:")new_addr = input("你要添加的地址:")#定义1个新的字典dict,用来存储新的名片new_infor = {}new_infor["name"] = new_namenew_infor["age"] = new_agenew_infor["qq"] = new_qqnew_infor["addr"] = new_addr#将1个字典dict添加到列表listglobal card_inforscard_infors.append(new_infor)#print(card_infors) #for test 测试用的 def find_card_infor():"""完成查询1个名片的功能"""global card_inforsfind_name = input("请输入你要查询的名字:")flag = 0 #默认 没有查到此人for tmp in card_infors:if find_name in tmp["name"]:print("%s\t%s\t%s\t%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))flag = 1 #表示查到此人了break#判断是否找到了 if flag == 0:print("查无此人")def show_card_infor():"""完成显示名片"""global card_inforsprint("姓名\t年龄\tqq号\t地址")for tmp in card_infors:print("%s\t%s\t%s\t%s"%(tmp["name"],tmp["age"],tmp["qq"],tmp["addr"]))def save_2_file():'''完成保存到文件的功能'''f = open("backup.data",'w')f.write(str(card_infors))f.close()def load_infor():'''完成对文件内数据的加载'''global card_inforstry:f = open("backup.data","r")card_infors = eval(f.read())f.close()except Exception:passdef main():'''完成对整个程序的控制'''#恢复加载之前的文件内容到程序中 load_infor()# 1.打印功能信息 print_menu()while True:#2.获取用户的输入num = int(input("请输入你要的功能:"))#3.根据用户的输入,执行相应的功能if num == 1:add_new_card_infor()elif num == 2:passelif num == 3:passelif num == 4:find_card_infor()elif num == 5:show_card_infor()elif num == 6:save_2_file()elif num == 7:breakelse:print("你输入的有误,请重新输入")print("")if __name__ == "__main__":#调用主函数main()
转载于:https://www.cnblogs.com/venicid/p/7898875.html
day 5 名片管理系统-文件版相关推荐
- python增删改查人名管理_python3字典列表的增删改查(名片管理系统函数版)
1.列表的增删改查 增加:有三种添加方式(append.insert.extend) #append:把添加的内容直接添加到列表的末尾 a=[1,2,3] a.append('abc') print( ...
- java银行管理系统-文件版
这个程序针对大一或者大二java实验,涉及文件的简单读写操作,实现存档功能,而不是每次打开程序都是固定的值,方法也放在不同的类中,降低耦合程度,能更好的维护代码和程序的功能,程序简单,注释不多,再次话 ...
- Python 名片管理系统(文件版,可存档读档)
Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表.字典和函数的综合应用) 以下是新增部分的代码(不包括调用 ...
- python3实现名片管理系统(文件版)
def menu():#首先定义功能列表函数menu()print(" 名片管理系统 V1.0 ")print("1:增加新用户")print("2: ...
- 用python3做学生管理系统_详解用python实现基本的学生管理系统(文件存储版)(python3)...
详解用python实现基本的学生管理系统(文件存储版)(python3) 来源:中文源码网 浏览: 次 日期:2019年11月5日 详解用python实现基本的学生管理系统(文件存储版)( ...
- python登录系统文件版_详解用python实现基本的学生管理系统(文件存储版)(python3)...
这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后 ...
- 文件管理系统(文件版)
上次做的文件管理系统因为使用列表存放数据,结束即会从内存清空,所以我们这次做一个文件版的 stu_f = "students.txt"def show_menu():print(& ...
- Python版名片管理系统源代码
Python版名片管理系统,功能: 新增名片(记录用户的姓名,电话,QQ,邮箱): 显示所有名片: 查询名片: 查询成功后可以修改,删除名片 运行截图: cards_main.py :程序的入口,完整 ...
- C语言总结项目和入门大作业——信息管理系统(多文件版)
文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...
最新文章
- 体验Windows 7的Superbar
- JavaScript的主要功能
- Custom Control 设计初论
- linux操作系统应急方案,服务器操作系统应急预案
- 【BZOJ2115】[Wc2011] Xor 高斯消元求线性基+DFS
- 空间谱专题06:宽带信号处理思路
- javadoc maven_Maven Fluido Skin和Javadoc类图
- 提高 Google 搜索效率的基本语法
- 指针4-指针的运算和指针变量占几个字节
- node代理请求 vue_vue-cli项目开发/生产环境代理实现跨域请求+webpack配置开发/生产环境的接口地址...
- 去除本机利用ssh协议登陆远程机器的痕迹
- 找工作,如何写好一份漂亮的简历,给你借鉴一下
- 跨境电商SaaS会成为一门大生意吗?
- 虚拟偶像发展史:TA们到底如何成功?万字复盘
- 联想服务器一直在初始化系统,为什么联想“一键恢复”一直在初始化
- 女生被渣,或许自己才是最大的黑手
- 分享个免费的货币汇率API
- 关于孟岩一篇文章的讨论
- elementui表格自定义序号
- 发布和共享 MATLAB 代码
热门文章
- 数据结构和算法笔记:基数排序
- 开源项目管理系统:ProjectForge
- MySQL记录变化工具_MySQL 表记录数对比工具
- visual studio 最新稳定版本_速来围观!Android Studio 4.0 稳定版发布了
- 安卓手机上跑_直接在电脑上浏览操作安卓手机 #效率App #scrcpy
- no required module provides package github.com/gorilla/mux
- 【NOIP2004】【Luogu1090】合并果子
- 剑与远征服务器维修,剑与远征怎么换区 剑与远征在哪里切换新的服务器
- c语言程序一些常见的不足,C语言常见错误分析及解决方法
- ajax回调函数提交表单,MVC3中ajax提交表单无法执行success回调函数,怎么办?