返回顶部
首页 > 资讯 > 后端开发 > Python >Python比较配置文件
  • 431
分享到

Python比较配置文件

配置文件Python 2023-01-31 00:01:09 431人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

工作中最常见的配置文件有四种:普通key=value的配置文件、JSON格式的配置文件、html格式的配置文件以及YAML配置文件。 这其中以第一种居多,后三种在成熟的开源产品中较为常见,本文只针对第一种配置文件。 一般来说linux s

工作中最常见的配置文件有四种:普通key=value的配置文件、JSON格式的配置文件、html格式的配置文件以及YAML配置文件。

这其中以第一种居多,后三种在成熟的开源产品中较为常见,本文只针对第一种配置文件。

一般来说linux shell下提供了diff命令来比较普通文本类的配置文件,python的difflib也提供了str和HTML的比较接口,但是实际项目中这些工具其实并不好用,主要是因为我们的配置文件并不是标准化统一化的。

为了解决此类问题,最好针对特定的项目写特定的配置文件比较工具,这样在版本发布时会很有用处。

其他话懒的说了,直接贴代码:

#!/usr/bin/Python
#coding=utf-8

'''
此脚本适用于比较key=value格式的配置文件
使用方式为:
config_match.py old_file new_file
最终会将new_file中的新增配置项添加入old_file中,old_file中已有的配置项不会做任何改变。
'''

import re
import os,sys
reload(sys)
sys.setdefaultencoding("utf-8")

try:
    old_file = sys.argv[1]
    new_file = sys.argv[2]
except Exception,e:
    print("Error:" +str(e))
    print("Usage: config_match.py old_file new_file")
    sys.exit()

def list2dict(file):
    with open(file,'r') as f:
        list=f.readlines()
    #遍历str list,排除空行和以#开头的str,使用split将str元素转为[k,v]元素
    for e in list[0:]:
        if re.match('^#',e) or re.match('^$',e):
            list.remove(e)
    i=0
    for e in list:
        e_split=e.strip().split('=')
        if len(e_split)==2:
            k,v=e.strip().split('=')
            list[i]=[k,v]
        else:
            pass
        i=i+1
    #至此list变为了[[k,v],[k,v],...]这样的list
    #包含多个=号或者不包含=号的配置项会被忽略,这点要注意
    return dict(list)

old_dict=list2dict(old_file)
new_dict=list2dict(new_file)

'''
遍历新配置文件,将新增配置项加入conf_need_added{}字典中,然后将conf_need_added{}字典以k=v格式append入旧文件中。
如果重复的键值也需要更新那就太简单了,dict类型自带的update()方法就可以很好的完成任务,根本无需这么折腾了。
'''
conf_need_added={}
for k,v in new_dict.items():
    if k not in old_dict.keys():
        conf_need_added[k]=v
    else:
        pass

with open(old_file,'a') as f:
    for k,v in conf_need_added.items():
        f.write('\n#以下为新增配置项:\n')
        f.write(str(k)+'='+str(v)+'\n')

 

--结束END--

本文标题: Python比较配置文件

本文链接: https://lsjlt.com/news/182611.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python比较配置文件
    工作中最常见的配置文件有四种:普通key=value的配置文件、Json格式的配置文件、HTML格式的配置文件以及YAML配置文件。 这其中以第一种居多,后三种在成熟的开源产品中较为常见,本文只针对第一种配置文件。 一般来说Linux s...
    99+
    2023-01-31
    配置文件 Python
  • python对比配置文件差异
    #!/usr/bin/env python import difflibimport sys try:tx1 = sys.argv[1]tx2 = sys.argv[2]except Exception as e:print "error"...
    99+
    2023-01-31
    配置文件 差异 python
  • python比较两个文件的差异
    使用python脚本比较两个文件的差异内容并输出到html文档中,可以通过浏览器打开查看。一、脚本使用对比nginx配置文件的差异 python python_diff_file.py -f1 web26.conf -f2 web103.c...
    99+
    2023-01-31
    差异 两个 文件
  • 比较全面的DHCP配置
    以下是一个全面的DHCP(动态主机配置协议)配置示例:```option domain-name "example.com";opt...
    99+
    2023-09-13
    DHCP
  • python怎么比较两个文件的差异
    在Python中,可以使用difflib模块来比较两个文件的差异。difflib模块提供了一些用于比较文件、字符串和序列的方法。 下...
    99+
    2023-10-28
    python
  • GoFrame gredis配置文件及配置方法对比
    目录前言摘要GoFrame gredis配置文件(推荐)使用示例:打印结果配置方法(高级)使用示例:总结前言摘要 上一篇文章为大家介绍了 GoFrame gcache使用实践 | 缓存控制 淘汰策略 ,得到了大家积极的反...
    99+
    2022-06-13
    GoFrame gredis配置文件方法 GoFrame gredis配置
  • Python使用fliecmp实现比较文件的操作
    目录前言生成示例文件cmp()(比较文件)cmpfiles()(比较一组文件)dircmp()(比较目录)left_list与right_list忽略部分文件进行对比其他属性前言 对于文件的比较一般有几种,比如比较文...
    99+
    2022-06-02
    Python 比较文件 Python fliecmp比较文件 Python 文件比较
  • linux如何比较文件不同
    本篇内容介绍了“linux如何比较文件不同”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!linux比较文件不同的方法:1、使用comm命令,...
    99+
    2023-06-29
  • Spring的注解配置与XML配置之间的比较
    注释配置相对于 XML 配置具有很多的优势:它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作。如使用 JPA 注释配置 ORM 映射时,我们就不需要...
    99+
    2022-11-15
    spring 注解配置 XML配置
  • 云服务器什么配置比较好
    云服务器是一种虚拟的计算服务,它允许用户在本地或远程服务器上使用相同的硬件或软件资源,从而提供更好的灵活性、性能和可扩展性。以下是一些比较常见的云服务器配置: 硬件配置: CPU: Intel x86 系列单核心 CPU(最低配); ...
    99+
    2023-10-26
    比较好 服务器
  • Python读取配置文件
    文章目录 Python读取配置文件一、 yaml1、 准备2、 操作数据2.1 读取数据2.2 写入数据 二、 ini1、准备2、 操作数据2.1 读取数据2.2. 写数据 ...
    99+
    2023-09-03
    python 开发语言
  • python 操作配置文件。
      一:配置文件 1. 什么是配置文件 配置文件是为程序配置参数和初始设置的文件。一般为文本文件,以ini,conf,cnf,cfg,yaml等作为后缀名。 例如mysql的配置文件my.cnf内容如下: [mysqld]# Only a...
    99+
    2023-09-22
    数据库 服务器 开发语言 压力测试 测试用例
  • 香港服务器什么配置比较好
    根据用户选择合适的香港机房。并且目前服务器操作系统有很多,应该选择自己熟悉的操作系统。还要根据自己的网站需求选择合适的资源。在选择一家服务商时,要确保服务器在遇到问题时,能及时获得技术支持。因此售后服务也很重要。...
    99+
    2024-04-02
  • 云服务器什么配置比较好用
    云服务器的配置因不同的云提供商而异,但以下是一些常见的配置选项: 硬件需求:通常选择一台物理服务器和一些网络设备(包括网卡、内存和硬盘)。 数据存储:您可以选择一台云服务器作为您数据存储的主要平台,并根据您的数据要求和使用习惯选择适当的...
    99+
    2023-10-27
    好用 服务器
  • python 和 nodejs 比较
    原文连接 包和模块管理 依赖包多版本管理 python 不能直接管理,需要利用 virtualenv来分割不同的环境nodejs NPM 包管理,可以同时依赖不同版本的第三方模块引入模块 python 使用 from / import...
    99+
    2023-01-31
    python nodejs
  • SpringBoot配置加载,各配置文件优先级对比方式
    目录1.SpringBoot配置文件以设置应用端口为例2.配置文件目录3.自定义配置属性自定义配置提示4.指定配置文件@PropertySource使用装配yaml配置文件@Impo...
    99+
    2024-04-02
  • Python文件对比
    环境:python2.6.6linux系统对比文件差异用Python里的difflib模块:Python自带difflib模块,无需安装。对比两个文件是否一样总体思路就是:将文件里的内容读出来然后再对比符号含义+包含在第二个序列中,但不包含...
    99+
    2023-01-31
    文件 Python
  • Linux怎么使用Meld比较文件夹
    这篇文章将为大家详细讲解有关Linux怎么使用Meld比较文件夹,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。用 Meld 比较文件夹打开 Meld 工具,然后选择 比较文件夹Directory comp...
    99+
    2023-06-28
  • 将文本文件放入切片然后比较
    问题内容 我正在编写一个程序,在 .txt 文件中逐行获取用户名,并验证用户名是否在其中。然后,我创建了一个切片并将文件转换为字符串并将其附加到字符串切片中。我现在尝试使用 for 循...
    99+
    2024-02-06
  • Python如何配置文件yaml
    今天小编给大家分享一下Python如何配置文件yaml的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。YAML是一种直观的能够...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作