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)

大家都在看

  • WEB自动化-11-数据驱动

    11 数据驱动 数据驱动是测试框架中一个非常好的功能,使用数据驱动,可以在不增加代码量的情况下生成不同的测试策略。下面我们来看看在Cypress中的数据驱动使用方法。 11.1 数…

    Linux 2023年6月7日
    0116
  • 【抄】Shell正则表达式

    shell 正则语法基础 copy from: https://man.linuxde.net/docs/shell_regex.html 正则表达式的分类 基本的正则表达式(Ba…

    Linux 2023年5月28日
    0116
  • Snap Build Your Own Blocks输入中文解决办法

    Snap Build Your Own Blocks 输入中文解决办法 Snap! (formerly BYOB) is a visual, drag-and-drop progr…

    Linux 2023年6月6日
    095
  • 基于libevent的http服务器实现

    基于libevent的http服务器实现 //libevent的http服务器简单实现方式 #include #include #include #include //for st…

    Linux 2023年6月14日
    0112
  • CAPL学习笔记

    CAPL是CANOE自带的一种编程语言,要和CANOE中的一个节点绑定在一起。它的文件后缀是.can。 两种添加方式:1. 在simulation setup中增加一个网络节点,配…

    Linux 2023年6月13日
    091
  • 上篇:Go函数的骚包玩法有哪些

    1. 用type关键字可以定义函数类型,函数类型变量可以作为函数的参数或返回值。 package main import "fmt" func add(a, b…

    Linux 2023年6月7日
    096
  • 关于docker中容器可以Ping通外网,真机无法Ping通容器的问题

    首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上。其中docker中还有若干容器运行。 整体框架图如下: 我们将它分…

    Linux 2023年5月27日
    0186
  • SQL52 获取employees中的first_name

    本题链接表结构如下所示(内容不完整):额外的要求是按照first_name最后两个字母升序进行输出。这里需要用到MySQL的字符串处理函数RIGHT。RIGHT函数的语法如下所示:…

    Linux 2023年6月13日
    0127
  • JavaScript快速入门-03-数据类型

    3 数据类型 3.1 简介 JavaScript中的每个值都是属于一种特定的数据类型。JavaScript中一共有以下几种数据类型,详细如下所示: 原始类型: Undefined、…

    Linux 2023年6月7日
    0164
  • webshell查杀的方法

    从您反馈的情况看,是您的网站被植入了webshel后门文件导致的。您可以先对当前的服务器做下快照备份,然后将您的网站代码拷贝到本地进行下webshell查杀:https://www…

    Linux 2023年5月28日
    0119
  • 环境变量

    环境变量,简单来说就是描述程序执行环境的一组变量。 1、什么程序执行环境? 环境已经基础词汇呢,我们通常都用环境去解释别的词,想一下,日常生活怎么用环境。你到一个新地方,我问你环境…

    Linux 2023年6月6日
    0129
  • redis key的过期时间

    设置redis key的生存过期时间 Redis 有四个不同的命令可以用于设置键的生存时间(键可以存在多久)或过期时间(键什么时候会被删除) : EXPlRE 命令用于将键key …

    Linux 2023年5月28日
    098
  • LeetCode-210. 课程表 II

    题目来源 题目详情 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses – 1。给你一个数组 prerequisites ,其中 prerequis…

    Linux 2023年6月7日
    092
  • Windows 是最安全的操作系统

    建了一个用户交流群,我在群里说:”Windows 是最安全的操作系统。” 立刻引发了很多有意思的观点。我在群里一个人说不过大家,先篇文章把自己的论点罗列一下…

    Linux 2023年6月14日
    094
  • 总结:弹性伸缩的五个条件与六个教训

    前言弹性伸缩是云计算时代给我们带来的一项核心技术红利,但是 IT 的世界中,没有一个系统功能可以不假思索的应用到所有的场景中。这篇文章,我们将应用企业级分布式应用服务-EDAS 的…

    Linux 2023年6月8日
    0105
  • cobbler离线安装脚本

    cobbler离线安装脚本 配套离线安装cobbler教程 需要手动上传镜像包和离线安装包 #!/bin/bash #上传cobbler离线安装包和centos镜像包 解压离线安装…

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