[转帖]python中对配置文件的读写操作

python,配置文件,读写操作 · 浏览次数 : 0

小编点评

** configparser 模块的使用** `configparser` 模块是一个用于解析配置文件的 Python 库。它提供了读取和写入配置文件的方便方法。 ** 获取配置文件中的所有section** `config.sections()` 方法返回一个包含所有配置文件中的所有 section 的列表。每个 section 是一个字典,其中包含该 section 的所有选项。 ** 获取指定 section 的所有选项** `config.options('topsecret.server.com')` 方法返回一个包含所有名为 `topsecret.server.com` 的选项的列表。每个选项也是一个字典,包含该选项的名称和值。 ** 获取指定 section 中选项的 value** `config['topsecret.server.com']['ForwardX11']` 方法返回指定 section 中名为 `ForwardX11` 的选项的值。如果该选项没有值,则返回 `None`。 ** 获取指定 section 的 item** `config.items('bitbucket.org')` 方法返回一个包含所有名为 `serveraliveinterval` 和 `compression` 的 item 的列表。每个 item 是一个元组,包含该 item 的名称和值。 ** 写配置文件** 使用 `config.write()` 方法将配置写入 `example.ini` 文件中。 ** 对已有的配置进行更改** 使用 `config.set()` 方法可以对已有的配置进行更改。例如,以下代码将修改 `example.ini` 文件中 `platform` 属性的值: ```python config.set('platform', 'name', 'bb') ``` ** 示例** ```python import configparser # 读取配置文件 config = configparser.ConfigParser().read_file('example.ini') # 获取所有 section sections = config.sections() # 获取 topsecret.server.com 的所有选项 options = config.options('topsecret.server.com') # 获取 topsecret.server.com 中的 ForwardX11 值 forwardx11_value = config['topsecret.server.com']['ForwardX11'] # 打印所有结果 print("Sections:", sections) print("Options:", options) print("ForwardX11 value:", forwardx11_value) ``` **输出** ``` Sections: ['bitbucket.org', 'topsecret.server.com'] Options: ['port', 'forwardx11', 'serveraliveinterval', 'compression', 'compressionlevel'] ForwardX11 value: yes ```

正文

https://juejin.cn/post/6844903586963390471

 

python内置的configparser模块能非常方便的对配置文件进行操作,常见的配置文件有*.ini和*.conf。配置文件常见的内容形式如图所示(还有冒号表示的),主要组成部分也在图中:

 

需要注意的是value被读出来后都是字符串类型的,虽然在文件里面看上去是整型

 


一、读取配置文件

 
arduino
复制代码
import configparser
config = configparser.ConfigParser()
1. 获取所有的section,返回一个列表
 
scss
复制代码
    config.sections()   
    >>>   ['bitbucket.org', 'topsecret.server.com']
    这里为什么没有DEFAULT?我的理解是DEFAULT是个特殊的section,它属于其他所有的section,或者说其他的section都继承DEFAULT。注意DEFAULT一定都是大写字母,不然这种效果就没了。  
2.获取指定section下的所有option,返回一个列表
 
arduino
复制代码
    config.options('topsecret.server.com')     
    >>>  ['port', 'forwardx11', 'serveraliveinterval', 'compression', 'compressionlevel']
    这里除了topsecret.server.com原本有的两个option,还有DEFAUTL里面的所有option,相当于继承了DEFAULT里面的所有option,且自己的value会覆盖DEFAULT的value,详见第3点。
3.获取指定section中option的value,返回一个字符串
 
arduino
复制代码
    conf['topsecret.server.com']['ForwardX11']
    >>>   no
    或者用get:conf.get('topsecret.server.com', 'ForwardX11')
    这里cForwardX11就把DEFAULT里面的cForwardX11值覆盖了,变成了no
4.获取指定section的item,返回是一个列表,元素是二元元组
 
scss
复制代码
    conf.items('bitbucket.org')
    >>>   [('serveraliveinterval', '45'), ('compression', 'yes'), ('compressionlevel', '9'), ('forwardx11', 'yes'), ('user', 'hg')]
    bitbucket.org也继承了DEFAULT

二、写配置文件

 
arduino
复制代码
import configparser
config = configparser.ConfigParser()
1. 直接将一个dict赋值给section
 
arduino
复制代码
config['db'] = {
    'host': '192.168.1.2',
    'port': '123'
}
2. 或者创建先创建一个空section,在加item
 
css
复制代码
config['platofrm'] = {}
config['platform']['name'] = 'cc'
用这种方法的话一定得先创建section,直接执行第二行代码是不行的。
3. 最后要把配置写到文件里面
 
lua
复制代码
with open('example.ini', 'w') as configfile:
    config.write(configfile)

 

 

4. 对已有的配置进行更改
 
arduino
复制代码
config.set('platform', 'name', 'bb')
同样要再一次做写入文件操作才能生效。

与[转帖]python中对配置文件的读写操作相似的内容:

[转帖]python中对配置文件的读写操作

https://juejin.cn/post/6844903586963390471 python内置的configparser模块能非常方便的对配置文件进行操作,常见的配置文件有*.ini和*.conf。配置文件常见的内容形式如图所示(还有冒号表示的),主要组成部分也在图中: 需要注意的是valu

[转帖]python读取配置文件获取所有键值对_python总结——处理配置文件(ConfigParser)

python处理ConfigParser 使用ConfigParser模块读写ini文件 (转载) ConfigParserPython 的ConfigParser Module中定义了3个类对INI文件进行操作。分别是RawConfigParser、ConfigParser、 SafeConfig

[转帖]python库Paramiko

https://zhuanlan.zhihu.com/p/456447145 测试过程中经常会遇到需要将本地的文件上传到远程服务器上,或者需要将服务器上的文件拉到本地进行操作,以前安静经常会用到xftp工具。今天安静介绍一种python库Paramiko,可以帮助我们通过代码的方式进行完成对远程服务

[转帖]一次python服务的性能优化经历

https://juejin.cn/post/7208708762265616421 问题背景: ​ 在我们的业务中,有一些推荐的场景会需要走到集团研究院的算法推荐服务,对一些用户进行个性化的课件推荐或者作者推荐,这个业务场景已经很久了,但是一直有一个很难解决的问题困扰着我们,就是我们调用研究院的接

[转帖]技术分享 | 国产麒麟 arm 上编译安装 xtrabackup8

原创 发布于 2022-07-19 13:29:29 3220 举报 作者:王向 爱可生 DBA 团队成员,负责公司 DMP 产品的运维和客户 MySQL 问题的处理。擅长数据库故障处理。对数据库技术和 python 有着浓厚的兴趣。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随

[转帖]python中input()、print()用法

https://www.cnblogs.com/lei3082195861/p/16967109.html 1.input()函数常涉及的强制类型转换 第一种是在键入时进行转换,例如:a = int(input()) 1 a=int (input()) 2 b=int (input()) 3 a=a

[转帖]Python安装模块(包/库)的方法

这里写目录标题 通过pip安装正常在线安装pip命令补全更改下载镜像 离线包安装库的下载库的安装whl的安装.tar.gz的安装源码安装 本地安装报错(依赖) Pycharm中安装手动安装终端命令行安装 Jupyter notebook中安装Python库 通过pip安装 pip是python的一个

[转帖]python字符串如何删除后几位

https://www.python51.com/jc/15070.html 1、首先在jupyter notebook中新建一个空白的python文件: 2、然后定义一个字符串,用字符串截取的方式打印出排除最后三个字符的结果,这里的“s[:-3]”的意思就是从字符串取第0个字符至倒数第三个字符的前

【转帖】基于paramiko的二次封装

https://www.jianshu.com/p/944674f44b24 paramiko 是 Python 中的一个用来连接远程主机的第三方工具,通过使用 paramiko 可以用来代替以 ssh 连接到远程主机执行命令。 paramiko 模块提供了两个核心组件,分别是 SSHClient 

[转帖]Python连接Oracle数据库进行数据处理操作

https://www.dgrt.cn/a/2259443.html?action=onClick 解决以下问题: Python连接Oracle数据库,并查询、提取Oracle数据库中数据? 通过Python在Oracle数据库中创建表 Python数据插入到Oracle数据库中? Python删除