python 对文件操作

实现对文件的简单操作

#!/usr/bin/env python
-*- coding:utf-8 -*-

def Find(class_name):
    class_list = []
    tag = False
    with open('data', 'r', encoding='utf8') as f:
        for line in f:
            if line.strip() == '班级:{0}班'.format(class_name.strip()):
                class_list.append(line)
                tag = True
                continue
            if tag and line.find('班级:') != 0:
                class_list.append(line)
            if line.find('班级:') == 0:
                tag = False

    return class_list;

def Add(dic):
    # { '班级':'191','学生':[{'姓名':'张三','学号':'2018001','年龄':18,'性别':'男'},{'姓名':'李四','学号':'2018002','年龄':21,'性别':'男'},{'姓名':'小花','学号':'2018003','年龄':18,'性别':'女'},{'姓名':'小红','学号':'2018004','年龄':33,'性别':'女'}]}
    class_obj = eval(dic)
    class_name = class_obj['班级']
    class_list = Find(class_name)
    if len(class_list) > 0:
        print('系统中已经存在班级[%s]。' % (class_name))
        return

    with open('data', 'a+', encoding='utf8') as f:
        f.write('\n班级:%s班' % (class_name))
        for student in class_obj['学生']:
            f.write('\n    姓名:{0}   学号:{1}   年龄:{2}   性别:{3}'.format(student['姓名'], student['学号'], student['年龄'],
                                                                     student['性别']))

    print('添加成功!')

def Update(dic):
    class_obj = eval(dic)
    class_name = class_obj['班级']
    class_list = Find(class_name)
    if len(class_list) == 0:
        print('没有查询到该班级信息。')
        return
    Delete(class_name)
    Add(dic)
    print('更新成功!')

def Delete(class_name):
    class_list = Find(class_name)
    if len(class_list) == 0:
        print('没有查询到该班级信息。')
        return
    class_list = []
    tag = False
    with open('data', 'r', encoding='utf8') as old_file:
        for line in old_file:
            if line.strip() == '班级:{0}班'.format(class_name.strip()):
                tag = True
                continue
            else:
                if tag and line.find('班级:') != 0:
                    continue
                if line.find('班级:') == 0:
                    tag = False
                class_list.append(line)

    with open('data', 'w', encoding='utf8') as new_file:
        for line in class_list:
            new_file.write(line)

    print('删除成功!')

if __name__ == '__main__':
    while True:
        print('\n1、查询    2、修改    3、添加    4、删除    ')
        operation = input('请输入操作:')
        if (operation == '1'):
            class_name = input('请输入查询的班级名称:')
            class_list = Find(class_name)
            if len(class_list) == 0:
                print('没有查询到该班级信息。')
            else:
                for line in class_list:
                    print(line, end='')
        elif (operation == '2'):
            dic = input('请输入修改的字典数据:')
            Update(dic)
        elif (operation == '3'):
            dic = input('请输入添加的字典数据:')
            Add(dic)
        elif (operation == '4'):
            class_name = input('请输入删除的班级名称:')
            Delete(class_name)
        else:
            print("输入不正确")

python 对文件操作
班级:191班
    姓名:张三   学号:2018001   年龄:18   性别:男
    姓名:李四   学号:2018002   年龄:21   性别:男
    姓名:小花   学号:2018003   年龄:18   性别:女
    姓名:小红   学号:2018004   年龄:33   性别:女

班级:188班
    姓名:Oliver   学号:2018005   年龄:18   性别:男
    姓名:Alax   学号:2018006   年龄:17   性别:男
    姓名:Tom   学号:2018007  年龄:19   性别:男

班级:143班
    姓名:小白   学号:2018008   年龄:23   性别:男
    姓名:小黑   学号:2018009   年龄:22   性别:男
    姓名:小蓝   学号:2018010   年龄:19   性别:女
    姓名:小吕   学号:2018011   年龄:21   性别:男

班级:189班
    姓名:吕布   学号:2018012  年龄:18   性别:男
    姓名:貂蝉   学号:2018013   年龄:17   性别:女
    姓名:赵云   学号:2018014   年龄:17   性别:男
    姓名:韩信   学号:2018015   年龄:18   性别:男

data文件

Original: https://www.cnblogs.com/haowuji/p/9429237.html
Author: 下-个路口
Title: python 对文件操作

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/606930/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Linux系统Yum中的$releasever和$basearch变量

    Yum的配置文件中包含大量的$releasever和$basearch变量,那么他们的取值是什么呢? 为什么要折腾这个玩意呢?有点地方的网络是私有化网络,内部有大量的Linux服务…

    Linux 2023年6月8日
    084
  • [20211217]滑稽可笑的程序代码2.txt

    [20211217]滑稽可笑的程序代码2.txt –//实在不知道如何取标题..感觉很无奈无语… –//昨天上午快下班的时候我使用ashtop看…

    Linux 2023年6月13日
    071
  • Redis 内存淘汰策略

    实际上redis定义了【八种内存淘汰策略】来处理redis内存满的情况 noeviction:直接返回错误,不淘汰任何已经存在的redis键 allkeys-lru:所有的键使用l…

    Linux 2023年5月28日
    095
  • Linux防火墙——iptables简介

    一、防火墙相关概念 这里描述了一些相关的概念。 [En] Some related concepts are described here. 从逻辑上讲,防火墙可以分为主机防火墙和…

    Linux 2023年5月27日
    096
  • Kibana 7.15.x [error][savedobjects-service] [.kibana] Action failed with ‘Request timed out’. Retrying attempt 报错处理。

    1、报错 近日在windows平台使用7.15.2 的elasticsearch 和kibana 时候,在开启es cmd窗口后,kibana无法启动,报错误下。 log [09:…

    Linux 2023年6月6日
    0119
  • 5.7 Linux Vim可视化模式

    相信大家都使用过带图形界面的操作系统中的文字编辑器,用户可以使用鼠标来选择要操作的文本,非常方便。在 Vim 编辑器中也有类似的功能,但不是通过鼠标,而是通过键盘来选择要操作的文本…

    Linux 2023年6月7日
    0112
  • 大小端存储是什么鬼?

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」 https://mp.weixin.qq.com/s/htYGddzO2xPl9kDN4lANpQ 大小…

    Linux 2023年6月6日
    0113
  • Linux显示IP和主机名

    (1) ifconfig:Linux ifconfig命令用于显示或设置网络设备。 语法: ifconfig [网络设备][down up -allmulti -arp -prom…

    Linux 2023年6月8日
    099
  • centos7磁盘扩容

    1.先增加一块磁盘 2.查看虚拟机磁盘[root@book ~]# df -h 记住红框里的位置信息 3.查看当前磁盘分区表[root@book ~]# fdisk -l 4.输入…

    Linux 2023年6月8日
    092
  • vim使用心得

    /etc/vimrc 系统整体的vim设定值 ~/.vimrc 用户自己的vim设定值 (此文件的批注为单个双引号) 目前我只设定了: set nu “显示行号 Ori…

    Linux 2023年6月6日
    081
  • Nginx进阶篇—web模块及proxy代理

    server { #在server{下面输入 sub_filter n…

    Linux 2023年6月6日
    075
  • Linux巡检脚本

    #!/bin/bash sys:centos6.x/7.x [ $(id -u) -ne 0 ] && echo "请&#x…

    Linux 2023年6月6日
    093
  • GitHub中Fork来的仓库如何进行双向更新

    [TOC](文章目录) 一、做点贡献 想对别人的某个仓库”做点贡献”怎么办? 1. Fork该仓库 首先Fork该仓库,本文以git-learn这个仓库为例…

    Linux 2023年6月7日
    0110
  • Golang 实现 Redis(9): 使用GeoHash 搜索附近的人

    本文是使用 golang 实现 redis 系列的第九篇,主要介绍如何使用 GeoHash 实现搜索附近的人。 搜索附近的POI是一个非常常见的功能,它的技术难点在于地理位置是二维…

    Linux 2023年5月28日
    0110
  • linux添加磁盘及分区挂载

    磁盘管理 1.为什么要添加磁盘 2.系统添加磁盘并分区 磁盘管理 1.为什么要添加磁盘 随着系统的使用,磁盘的内容会越来越少,所以有必要添加磁盘来增加空间。 [En] With t…

    Linux 2023年5月27日
    087
  • Redis的Docker安装及基本使用

    Redis 端口 6379 通过以下命令启动一个简单的Redis容器 docker run –name some-redis -d -p 6379:6379 redis:6.2….

    Linux 2023年5月28日
    082
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球