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)

大家都在看

  • TCP 和 UDP 协议简介

    一、TCP TCP(Transmission Control Protocol),传输控制协议,对”传输、发送、通信”进行”控制”的…

    Linux 2023年6月16日
    0172
  • Ubuntu系统报错The system is running in low-graphics mode

    我遇到过两次这种请况,这次解决了。很nice! 在csdn上搜到的大部分操作是: 鼠标进入系统 使用快捷键 Ctrl+Alt+F1 进入用户 输入密码 然后按照以下代码进行 cd …

    Linux 2023年5月27日
    0114
  • Redis源码学习

    为什么要阅读Redis源码? 主要原因就是『简洁』。如果你用源码编译过Redis,你会发现十分轻快,一步到位。其他语言的开发者可能不会了解这种痛,作为C/C++程序员,如果你源码编…

    Linux 2023年5月28日
    0100
  • flask 之 请求钩子

    请求钩子 什么是请求钩子? 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要统一处理,为了让每个视图函数避免编写重复功能的代码, flask提供了统一的接口可以添加这些处理…

    Linux 2023年6月8日
    0108
  • Chrome的强大搜索功能

    前言 前几天一个好朋友求助我,大概问题是他的电脑QQ啥都能上网,就浏览器上不了网不是IE而是chrome,我第一反应可能是dns问题。后来发甩过来一张图,好家伙把我吓得,类似于下面…

    Linux 2023年6月14日
    0107
  • Redis 内存淘汰策略

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

    Linux 2023年5月28日
    0109
  • python入门基础知识五(for循环、公共操作与推导式)

    for循环 break终止循环 a = ‘abcd’ for i in a: … if i == ‘c’: … print("’c’ stands for ‘ce…

    Linux 2023年6月7日
    0129
  • 抓到 Netty 一个 Bug,顺带来透彻地聊一下 Netty 是如何高效接收网络连接的

    本系列Netty源码解析文章基于 4.1.56.Final版本,大家如果看到图片显示不了的话,可以查看公众号原文 对于一个高性能网络通讯框架来说,最最重要也是最核心的工作就是如何高…

    Linux 2023年6月6日
    0126
  • NO.2 Windows桌面图标-间距参数调整

    遇到如下问题: 桌面图标自动排序后间隔过大,且如图二这种指向图标能看到图标之间的间隔虚框,此方法可调整虚框的水平和垂直距离,即调整图标之间的间距。 测试电脑: 华为 mateboo…

    Linux 2023年6月7日
    0128
  • 使用 Spring Boot Admin 监控应用状态

    1 Spring Boot Actuator Spring Boot Actuator 是 Spring Boot 提供的对应用的自省和监控功能,如健康检查,审计,指标收集,HTT…

    Linux 2023年6月7日
    0106
  • Go函数下篇:defer和闭包

    package main import "fmt" func work() int { num := 10 defer func(i int) { i += 2…

    Linux 2023年6月7日
    096
  • Java类初始化顺序小结

    第一种情况(单一类) 测试结果 静态变量 静态&…

    Linux 2023年6月7日
    0114
  • [转]EVE-NG 中使用 SecureCRT 合并tab标签

    在EVE-NG中双击设备使用SecureCRT对设备进行调试连接时,会出现每次连接不同设备时都会打开一个新的SecureCRT窗口,而不是在一个窗口中添加一个新的标签页,这就会导致…

    Linux 2023年6月8日
    0101
  • 浅谈DDD中的聚合

    DDD分为战略部分跟战术部分,相信大家都认同DDD的核心在战略而非战术。而战略方面的核心我认为在业务建模,领域划分、统一语言等都在为业务建模服务。 为什么业务建模重要? 以前的开发…

    Linux 2023年6月8日
    0108
  • 《卡死你3000》批量修改被控机密码,秘钥

    批量生成密码之产生随机数: 默认产生16位大小写加数字密码 批量生成密码,并写入nodelist.csv: cs产生所有被控机旧密码并写入nodelist.ps1 运行这个脚本后,…

    Linux 2023年6月13日
    080
  • WPF 推荐一个剪贴板内容查看工具

    本文来安利大家一个好用的 Windows 剪贴板的内容查看工具 这是在 GitHub 上完全免费开源的应用,由 walterlv 开发的应用,详细请看 https://github…

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