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 名片管理系统-文件版相关推荐

  1. python增删改查人名管理_python3字典列表的增删改查(名片管理系统函数版)

    1.列表的增删改查 增加:有三种添加方式(append.insert.extend) #append:把添加的内容直接添加到列表的末尾 a=[1,2,3] a.append('abc') print( ...

  2. java银行管理系统-文件版

    这个程序针对大一或者大二java实验,涉及文件的简单读写操作,实现存档功能,而不是每次打开程序都是固定的值,方法也放在不同的类中,降低耦合程度,能更好的维护代码和程序的功能,程序简单,注释不多,再次话 ...

  3. Python 名片管理系统(文件版,可存档读档)

    Python 名片管理系统(文件版,可存档读档) 相比于函数版的程序,文件版增加了存档读档操作 函数版的可以参考Python名片管理系统(列表.字典和函数的综合应用) 以下是新增部分的代码(不包括调用 ...

  4. python3实现名片管理系统(文件版)

    def menu():#首先定义功能列表函数menu()print(" 名片管理系统 V1.0 ")print("1:增加新用户")print("2: ...

  5. 用python3做学生管理系统_详解用python实现基本的学生管理系统(文件存储版)(python3)...

    详解用python实现基本的学生管理系统(文件存储版)(python3) 来源:中文源码网    浏览: 次    日期:2019年11月5日 详解用python实现基本的学生管理系统(文件存储版)( ...

  6. python登录系统文件版_详解用python实现基本的学生管理系统(文件存储版)(python3)...

    这个是升级的版本,比较进阶一点的,相对与之前的文件管理系统,数据只是存储到了内存中,而不是存储到硬盘上,我们想让文件存储到硬盘上的话,一个是存储到文件里,一个是存储到数据库中,存储到数据库中的版本会后 ...

  7. 文件管理系统(文件版)

    上次做的文件管理系统因为使用列表存放数据,结束即会从内存清空,所以我们这次做一个文件版的 stu_f = "students.txt"def show_menu():print(& ...

  8. Python版名片管理系统源代码

    Python版名片管理系统,功能: 新增名片(记录用户的姓名,电话,QQ,邮箱): 显示所有名片: 查询名片: 查询成功后可以修改,删除名片 运行截图: cards_main.py :程序的入口,完整 ...

  9. C语言总结项目和入门大作业——信息管理系统(多文件版)

    文章目录 八. C语言入门大作业--信息管理系统(多文件版) 一. 功能模块的划分: 二. 多文件的编写 三. 基本函数的实现(重点) 四.文件操作函数 五.函数的辅助函数 六.多文件编程和联系 七. ...

最新文章

  1. python输出文字加数字_python变量、输入、输出、数字、字符串
  2. matlab smulink笔记03——过零检测
  3. 常见数据类型的手机二维码生成与识别格式参考
  4. 手机黑屏时闪屏怎么回事_手机屏幕碎了,先别着急换!维修师傅告诉你,如何不被忽悠多花钱...
  5. python用来正常显示中文标签 plt.rcParams['font.sans-serif'] = ['SimHei']错误
  6. js 香港地区 手机号效验正则
  7. 以下内容被锁定不能编辑:mxh983 ph6527 zyt2538 zyt9276 zy2674 zyt4372 zyt8731 zyt2832求解
  8. MyBatisplus字段名与表名的映射
  9. centos 安装 时间校准与定时同步
  10. Python字符串和列表常用的方法和操作
  11. ZIF-67沸石咪唑酯骨架结构材料/cas46201-07-4/2-MethylimidazoleCobaltsalt
  12. Uos统信系统 SSH
  13. 软件工程学习笔记(二)软件项目管理
  14. 连接MySql报错【ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)】
  15. 批处理应用:IE问题修复
  16. hadoop 常用环境变量及使用
  17. eclipse代码折叠/展开之笔记本快捷键设置
  18. 新浪看点自媒体运营技巧详解!
  19. 优启通制作系统u盘_优启通u盘制作工具-easyu优启通2020官方下载-独木成林
  20. 【BZOJ1875/SDOI2009】HH去散步

热门文章

  1. 主流H.264编码器对比测试 (MSU出品)
  2. mysql大表数据抽取_从云数据迁移服务看MySQL大表抽取模式
  3. linux编辑文件命令 vi_Linux的vi编辑器
  4. c mysql dll_PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
  5. grid php 用法,grid布局主要用法
  6. 【poj3468】A Simple Problem with Integers
  7. NYOJ277 - 车牌号
  8. sqlserver提权失败_利用mssql模拟登录提权
  9. 贪心算法无重叠区间c语言,贪心算法之区间问题.md
  10. 家装计算器php,家装计算器