Python3练习:对员工信息文件,实现增删改查操作
1.练习要求:
2.数据文件(data_staff.txt)
- 1,Alex Li,22,13651054684,运维,2013-02-04
- 2,Jack Wang,20,13312331232,HR,2014-06-03
- 3,Mike Cao,20,15504231232,Sales,2013-05-06
- 4,Jack Chen,34,12404231232,HR,2011-02-01
- 5,Lu Haojie,21,15204231232,运维,2013-08-12
3.实现代码
A.主程序部分:采用字典类型来实现函数的调用(key对应的value是函数名,通过Name()语法可以调用函数执行),利用os模块的remove()和rename()实现文件的修改后的旧文件删除和新文件的重命名。
- import os
- msg_dict={
- '':Search,
- '':Add,
- '':Delete,
- '':Change,
- '':'退出'
- }
- while True:
- print( """
- 1:查询
- 2:添加
- 3:删除
- 4:修改
- 5:退出
- """)
- choice=input('输入序号:')
- if choice not in msg_dict:
- print("输入错误,请重新输入")
- continue
- if int(choice)==5:
- exit()
- else:
- msg_dict[choice]()
B.查询函数:主要通过字符串常用操作的split()实现从字符串到列表的转换,join()实现列表到字符串的转换
- def Search():
- # 查询方式一:select * from staff_table where age >= 22
- # 查询方式二:select * from staff_table where dept = "IT"
- # 查询方式三:select * from staff_table where enroll_date like "2013"
- data=input('输入您的查询信息:')
- data=data.split(' ')
- con=data[7]
- asp=data[5]
- count=0
- with open('data_staff','r',encoding='utf-8') as f:
- if asp=='age':
- for line in f:
- if int(line.split(',')[2])>=int(con):
- print(line)
- count+=1
- elif asp=='dept':
- for line in f:
- if line.split(',')[4] in con:
- print(line)
- count += 1
- else:
- for line in f:
- if line.split(',')[5].split('-')[0] in con:
- print(line)
- count += 1
- print('查询结束,共查到符合条件的信息 %d 条 ' % count)
C.添加函数:利用‘r+’的可读写模式来实现读写(注意这种方式下的write()是追加到文件末尾的)
- def Add():
- # 添加语法: name,age,phone,dept,enroll-date
- data=input('输入您要添加的员工信息:')
- list_data=data.strip().split(',')
- list_all=[]
- f=open('data_staff','r+')
- for line in f:
- list_all.append(line.strip().split(',')[3])
- if list_data[2] in list_all:
- print("该用户已经存在")
- f.close()
- else:
- for line in f:
- f.write(line)
- staff_id=str(len(list_all)+1)
- list_data.insert(0,str(staff_id))
- f.write('\n')
- f.write(','.join(list_data))
- f.close()
- print('添加成功')
D.删除函数:
- def Remove():
- # 删除语法:delete from staff_table where staff_id = 12
- staff_id=input("输入您要删除员工的Staff_id:")
- staff_id=staff_id.strip().split(' ')[6]
- f=open('data_staff','r')
- f1=open('new_data_staff','w')
- for line in f:
- in_list=line.split(',')
- if in_list[0]<staff_id:
- f1.write(line)
- elif in_list[0]>staff_id:
- in_list[0]=str(int(in_list[0])-1)
- f1.write(','.join(in_list))
- else:
- continue
- f.close()
- f1.close()
- os.remove('data_staff')
- os.rename('new_data_staff','data_staff')
- print('删除成功')
E.修改函数:
- def Change():
- # 修改请输入(注意空格和没有引号):UPDATE staff_table SET dept = IT where dept = 运维
- data=input("请输入您要修改的信息:")
- old=data.split(' ')[5]
- new=data.split(' ')[9]
- f=open('data_staff','r',encoding='utf-8')
- f1=open('new_data_staff','w',encoding="utf-8")
- for line in f:
- if old in line:
- line=line.replace(old,new)
- f1.write(line)
- f.close()
- f1.close()
- os.remove('data_staff')
- os.rename('new_data_staff','data_staff')
- print('修改成功')
Python3练习:对员工信息文件,实现增删改查操作的更多相关文章
- C#+Access 员工信息管理--简单的增删改查操作和.ini配置文件的读写操作。
1.本程序的使用的语言是C#,数据库是Access2003.主要是对员工信息进行简单的增删改查操作和对.ini配置文件的读写操作. 2.代码运行效果如下: 功能比较简单.其中在得到查询结果后,在查询结 ...
- Java使用DOM4J对XML文件进行增删改查操作
Java进行XML文件操作,代码如下: package com.founder.mrp.util; import java.io.File; import java.util.ArrayList; i ...
- python文件实现增删改查操作
# coding = utf-8 import os import json import re ''' 本程序旨在将练习基础知识部分,包括: 列表,元组,字典,文件,函数,字符串等知识 实现的功能: ...
- MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存
二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- 【练习】Python第四次:实现对文件的增删改查
一,实现对文件的增删改查 (一),三级菜单的处理结构及退出技巧:使用TAG标记 tag=True while tag: print('leve1') choice=input("level1 ...
- 基于SpringMVC的文件(增删改查)上传、下载、更新、删除
一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...
- 用dom4j解析xml文件并执行增删改查操作
转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- python3.6 使用 pymysql 连接 Mysql 数据库及 简单的增删改查操作
1.通过 pip 安装 pymysql 进入 cmd 输入 pip install pymysql 回车等待安装完成: 安装完成后出现如图相关信息,表示安装成功. 2.测试连接 import ...
随机推荐
- 使用WdatePicker日期组件时,选择日期后,执行某个方法
WdatePicker({onpicked:function(){alert(123);},dateFmt:'yyyy年MM月dd日',maxDate:'%y-%M-%d'}) 1.onpicked: ...
- Visio2010新建E-R图
visio2010没有内置E-R图的模板,需要自己配置模具.步骤如下: 1.文件->新建->基本流程图->右键菱形->添加到新模具->命名为E-R图. 2.更多形状-&g ...
- 页面引入(include)方式的研究及性能比较
1. 应用Html中的框架(iframe) 目前大多数门户网站都应用iframe来进行页面上广告的投放,就是将不同的广告分别应用iframe投放到主页面上,优点是效率高,互不影响,缺点是不符合网页标准 ...
- 解决因 RsFX devicer 而无法卸载 SQL Server 的问题
到卸载 SQL Server 2008 R2 安装程序支持文件时,遇到了问题:“警告 26003.无法卸载 Microsoft SQL Server 2008 R2 安装程序支持文件,因为安装了以下产 ...
- windows时间同步脚本
#!/usr/bin/env python# -*- coding:UTF-8 -*-# 脚本用于windows时间同步,设置window计划任务每五分钟执行一次 import timeimport ...
- php大文件上传失败的原因及解决方法
为什么上传大文件总是失败,上传小文件就没有问题.关于PHP大文件上传失败的原因及解决方法如下: 第1种情况:文件上传时存放文件的临时目录必须是开启的并且是 PHP 进程所有者用户可写的目录.如果未指定 ...
- Jmeter(一)工具的简单介绍(z)
一.JMeter介绍 Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序).它可以用来测试静态和动态资源的性能,例如:静态文件,J ...
- 关于tcp状态及一些延展
1.常用的三个状态是:ESTABLISHED 表示正在通信,TIME_WAIT 表示主动关闭,CLOSE_WAIT 表示被动关闭. TCP协议规定,对于已经建立的连接,网络双方要进行四次握手才能成功断 ...
- 51nod 1515 明辨是非 [并查集+set]
今天cb巨巨突然拿题来问,感觉惊讶又开心,希望他早日康复!!坚持学acm!加油! 题目链接:51nod 1515 明辨是非 [并查集] 1515 明辨是非 题目来源: 原创 基准时间限制:1 秒 空间 ...
- Mongod启动失败修复方法
可能的原因:上次服务未正常关闭 1.删除data/db目录下的mongo.lock文件 2.删除/tmp/mongodb-27017.sock文件