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语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...
最新文章
- python输出文字加数字_python变量、输入、输出、数字、字符串
- matlab smulink笔记03——过零检测
- 常见数据类型的手机二维码生成与识别格式参考
- 手机黑屏时闪屏怎么回事_手机屏幕碎了,先别着急换!维修师傅告诉你,如何不被忽悠多花钱...
- python用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei']错误
- js 香港地区 手机号效验正则
- 以下内容被锁定不能编辑:mxh983 ph6527 zyt2538 zyt9276 zy2674 zyt4372 zyt8731 zyt2832求解
- MyBatisplus字段名与表名的映射
- centos 安装 时间校准与定时同步
- Python字符串和列表常用的方法和操作
- ZIF-67沸石咪唑酯骨架结构材料/cas46201-07-4/2-MethylimidazoleCobaltsalt
- Uos统信系统 SSH
- 软件工程学习笔记(二)软件项目管理
- 连接MySql报错【ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)】
- 批处理应用:IE问题修复
- hadoop 常用环境变量及使用
- eclipse代码折叠/展开之笔记本快捷键设置
- 新浪看点自媒体运营技巧详解!
- 优启通制作系统u盘_优启通u盘制作工具-easyu优启通2020官方下载-独木成林
- 【BZOJ1875/SDOI2009】HH去散步
热门文章
- 主流H.264编码器对比测试 (MSU出品)
- mysql大表数据抽取_从云数据迁移服务看MySQL大表抽取模式
- linux编辑文件命令 vi_Linux的vi编辑器
- c mysql dll_PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
- grid php 用法,grid布局主要用法
- 【poj3468】A Simple Problem with Integers
- NYOJ277 - 车牌号
- sqlserver提权失败_利用mssql模拟登录提权
- 贪心算法无重叠区间c语言,贪心算法之区间问题.md
- 家装计算器php,家装计算器