我的编程空间,编程开发者的网络收藏夹
学习永远不晚

python3配置文件的增删改查,记录一

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

python3配置文件的增删改查,记录一

  1 #!/usr/bin/env python3
  2 
  3 import json             #json模块,用于将像字典的字符串转换为字典
  4 import re               #re模块,查找替换
  5 import shutil           #copy文件用
  6 shutil.copyfile('conf','conf.bak') #shutil.copyfile(文件1,文件2):不用打开文件,直接用文件名进行覆盖copy。
  7 #全局变量函数
  8 def env():
    global user_dic,insert_addr,server,weight,maxconn,insert_conf,rec,ser,wei,max #global定义全局变量,这样函数外也能调用该变量
    user_dic = json.loads(user_input)  # 将用户输入类似字典字符串转换为字典
    insert_addr = list(user_dic.items())[0][0] + ' ' + list(user_dic.items())[0][1]  # 将用户输入信息第一个keys和values取出来
    rec = list(user_dic.keys())[1]
    ser = list(user_dic[rec].keys())[0]
    wei = list(user_dic[rec].keys())[1]
    max = list(user_dic[rec].keys())[2]
    if rec in user_dic.keys():
        if ser in user_dic[rec].keys():
            server = user_dic[rec][ser]
        if wei in user_dic[rec].keys():
            weight = user_dic[rec][wei]
        if max in user_dic[rec].keys():
            maxconn = user_dic[rec][max]
        insert_conf = '%s %s %s %s %s %s %s' % (ser, server, server, wei, weight, max, maxconn)  # 将信息格式化
    else:
        print('输入有误')
env
 26 #将文件加入列表函数
 27 def list_lines():
    global lines
    with open('conf.bak', 'r') as f:
        for line in f:
            f.seek(0)  # 文件指针指定为0开始
            lines = f.readlines()  # 将文件每行读取到列表lines中,包括换行符\n和缩进\t。
View Code
 33 #判断是否是json格式函数
 34 def check_json_format():
    try:
        json.loads(user_input,encoding='utf-8')   #检测user_input是否是json格式,不是则异常
    except ValueError:       #异常报错,如没有异常这条永远不走
        return False          #异常报错返回False
    return True             #没有异常返回True
View Code
 40 #判断字符串是否为数字函数

41 def isnub(s):
    try:
        nb = float(s) #将字符串转换成数字成功则返回True
        return True
    except ValueError as e:
        return False #如果出现异常则返回False
View Code
 47 #索引值是否存在函数
 48 def if_index():
    try:
        lines.index(insert_index)
        return False
    except ValueError:
        return True
View Code
 54 #判断输入不能为空
 55 def if_else():
    if len(user_input) == 0:
        print('输入不能为空,请重新输入!')
        return True
    else:
        print('输入有误,请输入json格式字符串!')
        return False
View Code
 62 #输出文件变化
 63 def change():
    with open('conf', 'r') as f:
        print('修改之前:')
        for line in f:
            if insert_addr in line:
                print(line + next(f))
    with open('conf', 'r') as f:
        print('修改之后:')
        for line in f:
            if insert_addr in line:
                print(line + next(f) + next(f))
View Code
 74 #配置文件增加函数
 75 def increase_conf():
    global user_input,insert_index
    while True:
        user_input = input('输入要增加配置文件内容:').strip()
        if check_json_format() and isnub(user_input) == False:    #如果json判断函数返回True,则为json格式
            env()
            list_lines()
            if insert_addr+'\n' in lines:
                insert_index = lines.index(insert_addr+'\n')  # 获取insert_addr+\n在列表lines中的索引位置
                if if_index():
                    lines.insert(insert_index + 2, '        ' + insert_conf + '\n')  # 在列表中指定索引位置插入信息
                    with open('conf', '+w') as conf:
                        conf.write(''.join(lines))  # join将列表内容写入文件中以''隔开,也可以以'\n'隔开
                    print('已将%s添加到conf文件中'%(insert_conf))
                    change()
                    return True
                else:
                    print('%s在conf文件中不存在'%(insert_addr))
                    return False
            else:
                print('%s在conf文件中不存在'%(insert_addr))
                return False
        if if_else():
            continue
        else:
            continue
View Code
101 #配置文件删除函数
102 def del_conf():
   global user_input,insert_index
    while True:
        user_input = input('请输入需要删除配置信息:').strip()
        if check_json_format() and isnub(user_input) == False:  # 如果json判断函数返回True,则为json格式
            env()
            list_lines()
            if insert_addr + '\n' in lines:
                if '        '+insert_conf+'\n' in lines:
                    insert_index = lines.index('        '+insert_conf+'\n')
                    if if_index():
                        del[lines[insert_index]]
                        with open('conf', '+w') as conf:
                            conf.write(''.join(lines))  # join将列表内容写入文件中以''隔开,也可以以'\n'隔开
                        return True
                    else:
                        print('%s %s %s %s %s %s %s在文件conf中不存在'%(ser, server, server, wei, weight, max, maxconn))
                        continue
                else:
                    # print('%s不存在conf中'%(insert_conf))
                    print('%s %s %s %s %s %s %s在文件conf中不存在' % (ser, server, server, wei, weight, max, maxconn))
                    continue
            else:
                print('%s在文件conf中不存在'%(insert_addr))
                continue
        if if_else():
            continue
        else:
            continue
View Code
131 #配置文件修改函数
132 def modify_conf():
   global user_input
    while True:
        user_input = input('请输入需要修改的内容:').strip()
        if check_json_format() and isnub(user_input) == False:  # 如果json判断函数返回True,则为json格式
            env()
            list_lines()
            if insert_addr+'\n' in lines:
                if '        '+insert_conf+'\n' in lines:
                    while True:
                        user_input =  input('需要修改为:').strip()
                        if len(user_input) == 0:
                            print('输入不能为空,请重新输入!')
                            continue
                        else:
                            open('conf', 'w').write(re.sub(insert_conf, user_input,open('conf.bak').read()))#读取文件conf.bak中
                            # insert_conf替换为user_input,这里re.sub是查找替换,正则表达式。
                            print('已将:%s\n'
                                  '修改为:%s'%(insert_conf,user_input))
                            return True
        if if_else():
            continue
        else:
            continue
View Code
156 #配置文件查看函数
157 def see_conf():
    while True:
        user_input = input('请输入需要查找的内容:').strip()
        if len(user_input) == 0:
            print('输入不能为空,请重新输入')
            continue
        else:
            with open('conf','r') as f:
                    for line in f:
                        if user_input in line.strip():
                            print(line)
                            print(next(f))
                            return
                    else:
                        print('无法查找')
                        return
View Code
173 while True:
174     print('1、%s 2、%s 3、%s 4、%s'%('增加','删除','修改','查看'))
175     user_input = input('请选择对配置文件的动作:').strip()
176     if len(user_input) == 0:
177         print('输入不能为空,请重新输入!')
178         continue
179     if user_input == '1' or user_input == '增加':
180         increase_conf()
181         break
182     if user_input == '2' or user_input == '删除':
183         del_conf()
184         break
185     if user_input == '3' or user_input == '修改':
186         modify_conf()
187         break
188     if user_input == '4' or user_input == '查看':
189         see_conf()
190         break
191     else:
192         print('输入有误')
193         continue

 

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

python3配置文件的增删改查,记录一

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

python3配置文件的增删改查,记录一

1 #!/usr/bin/env python3 2 3 import json #json模块,用于将像字典的字符串转换为字典 4 import re #re模块,查找替换 5
2023-01-31

[PYTHON]简单的文件增删改查处理

快一个月木有更新了,在这段时间内,博主除了忙工作外,就一直在研究python编程,据圈内朋友闲聊,python应该是未来一个运维攻城狮除了shell以外必备的LINUX脚本语言,所以就硬着头皮,按照老男孩的python视频讲座,把自己的研究
2023-01-31

【MyBatis持久层框架】配置文件实现增删改查实战案例

文章目录 1. 前言 2. 准备工作 3. 查询所有数据 3.1 编写接口方法 3.2 编写sql语句 3.3 编写测试方法 3.4 resultMap的使用 4. 查询详情
2023-08-17

【MySQL】一文带你了解表的增删改查 CRUD

文章目录 1. 增加(Create)1.1 单行插入 + 全列插入1.2 多行插入 + 指定列插入 2. 查询(Retrieve)2.1 全列查询2.2 指定列查询2.3 查询字段为表达式2.4 别名2.5 去重2.6 排序
2023-08-16

C#中XML文件内容增删改查的方法

本篇内容介绍了“C#中XML文件内容增删改查的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!什么是XML?XML是一种可扩展标记语言(E
2023-06-29

通过shell脚本对mysql的增删改查及my.cnf的配置

shell操作mysql 1.获取mysql默认密码 新安装的mysql,密码是默认密码#!/bin/bash # STRING:获取mysql默认密码的一段字符串 # 例如:A temporary password is generat
2022-06-01

Golang文件操作增删改查功能的示例分析

这篇文章主要介绍Golang文件操作增删改查功能的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!正文开始之前,讲一个非常有意思的小桥段。最开始接触 Golang 这种语言的时候,我总感觉它和 Google 单
2023-06-14

Java中Mybatis框架增删查改与核心配置的示例分析

小编给大家分享一下Java中Mybatis框架增删查改与核心配置的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原始JDBC操作原始jdbc操作(查询数据)原始jdbc操作(插入数据)原始jdbc操作的分析原始jd
2023-06-25

记录开发环境docker上的一次springboot无法读取更新的配置文件的问题

背景:一般开发环境的管理不是很严格,当对代码进行一些组件的添加时,往往需要修改spring的配置文件,有的时候为了保险起见,回预先备份原本的配置文件,我采取在./config中创建了一个名为bak-日期的目录,将原本的配置文件mv到该目
2023-08-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录