百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python读写ini配置文件(python ini文件读写)

off999 2024-11-13 11:48 26 浏览 0 评论

INI 简介

INI 即 Initialize 初始化之意,早期是在 Windows 上配置文件的存储格式。INI 文件的写法通俗易懂,往往比较简单,通常由节(Section)、键(key)和值(value)组成,section名不能重复,就像以下形式:

[db]
host     = 127.0.0.1
user     = root
password = 123456
port     = 3306
database = mysql

[cfg]
data1 = 1
data2 = 2

Python 本身内置的 configparser 标准库,直接就可以用来对 INI 文件进行解析。如将上述内容保存在一个名为 db.ini 的文件中,然后使用 read() 方法来进行解析和读取,最后通过 items() 方法来获取指定节点下的所有键值对。

>>> from configparser import ConfigParser

>>> cfg = ConfigParser()

>>> cfg.read("/Users/user/db.ini")
['/Users/user/db.ini']

>>> cfg.items("db")
[('host', '127.0.0.1'), ('user', 'root'), ('password', '123456'), ('port', '3306'), ('database', 'mysql')]

需要注意的是,configparser 默认将值以字符串的形式呈现,所以这也就是为什么在 db.ini 文件中没有加引号而是直接将字面量写在上面的原因。

获取到键值对后,其实直接就将其转换成字典,然后通过解包的方式进行传参,保持代码简洁:

# pip install pymysql
import pymysql
from configparser import ConfigParser


cfg = ConfigParser()
cfg.read("/Users/user/db.ini")
db_cfg = dict(cfg.items("db"))
con = pymysql.connect(**db_cfg)

用法详解

模块引入

import configparser

"""
[DEFAULT]
data0 = 0

[db]
; 数据库配置
host     = 127.0.0.1
user     = root
password = 123456
port     = 3306
database = mysql

[cfg]
# 其他配置
data1 = 1
data2 = 2
"""

config = configparser.ConfigParser(comment_prefixes='/', allow_no_value=True)
# 在回写时清除配置文件中的注释的原因是 write 方法根本不处理注释。它只写键/值对。
# 绕过这个问题的最简单方法是使用自定义注释前缀和 allow_no_value=True 初始化配置解析器对象。
# 如果希望在文件中保留默认的 # 和 ; 注释行,可以使用 comment_prefixes='/' 。
# 也就是说,为了保留注释,必须让配置解析器相信这不是注释,这一行是一个没有值的键。
config.read(r'config.ini', encoding='utf-8')

获取节

# 获取所有 Section 名称
section_keys = list(config.keys())
print(section_keys)
# ['DEFAULT', 'db', 'cfg']

# 获取所有 Section 的数据
section_values = list(config.values())
print(section_values)
# [<Section: DEFAULT>, <Section: db>, <Section: cfg>]

# # 输出段落和段落中的字典,不包含DEFAULT的 Section
section_list = config.sections()
print(section_list)
# ['db', 'cfg']

获取键、值

# DEFAULT 段中的键值对
default_dict = config.defaults()
print(default_dict)
# {'data0': '0'}

# 获取指定 Section 的 Key 和 Value
db_info = config.items('db')
print(db_info)
# [('data0', '0'), ('host', '127.0.0.1'), ('user', 'root'), ('password', '123456'), ('port', '3306'), ('database', 'mysql')]
print(dict(db_info))
# {'data0': '0', 'host': '127.0.0.1', 'user': 'root', 'password': '123456', 'port': '3306', 'database': 'mysql'}

# 获取指定 Section 的 Key
db_keys = config.options('db')
print(db_keys)
# ['host', 'user', 'password', 'port', 'database', 'data0']

# 获取指定 Key 的 Value
host_info = config['db']['host']
print(host_info)
# 127.0.0.1

判断节、键、值是否存在

# 判断是否有指定 Section
print(config.has_section("db"))  # 指定的节存在
# True
print(config.has_section("mysql"))  # 指定的节不存在
# False

# 判断指定 Section 下是否指定的 key
print(config.has_option('db', 'host'))  # 指定节下的键存在
# True
print(config.has_option('db', 'ip'))  # 指定节下的键不存在
# False
print(config.has_option('mysql', 'host'))  # 指定的节不存在
# False

获取值类型转换

# 在ini中所有的键值对都默认为字符串,自动转换为数字
port_info = config.get('db', 'port')
print(port_info, type(port_info))
# 3306 <class 'str'>
port_info = config.getint('db', 'port')
print(port_info, type(port_info))
# 3306 <class 'int'>

添加、删除节、键值

# 通过 add_section 添加 Section,也可以通过 add_option 添加指定的键值(不会改变配置文件)
print(config.has_section('new'))
# False
config.add_section('new')
print(config.has_section('new'))
# True

# 通过 remove_section 删除 Section,也可以通过 remove_option 删除指定的键值(不会改变配置文件)
print(config.has_section('cfg'))
# True
config.remove_section('cfg')
print(config.has_section('cfg'))
# False

修改值

# 修改值,Section、Key必须要存在,否则会报错
print(config.get('db', 'host'))
# 127.0.0.1
config.set('db', 'host', '192.168.168.192')
print(config.get('db', 'host'))
# 192.168.168.192

写入配置文件

# 写入ini文件,如要保留注释,则添加 comment_prefixes='/', allow_no_value=True 参数
# 追加写,仅适用于添加不同的节
config.write(open("config.ini", "a", encoding='utf-8'))
# 全部写,将文件由config完全覆盖,会删除原配置文件注释
config.write(open("config.ini", "w", encoding='utf-8'))

相关推荐

7723游戏盒子官方正版(7723游戏盒子官方正版2023)

1、7723是通过在互联网上下载和安装得到的。2、因为7723是一款软件,需要从官方网站或第三方下载站点下载。下载过程需要考虑到网络速度、软件版本、安全性等因素,如果没有良好的网络环境或下载方式不正确...

广场资源看电视app(搜索电视广场)

电视机投屏没有投屏设备的原因是因为手机和电视没有在同一网络下,将电视和手机连接到同一网络即可实现投屏,具体的操作步骤如下:1,打开糖豆广场舞,选择要学习的舞蹈视频并打开2.点击【TV】键,与电视设备连...

纯净系统之家官网(纯净系统基地官网)

系统之家发布的Win10纯净版是没有预装激活工具的,您需要自行激活。以下是操作步骤:1.打开“设置”页面,选择“更新和安全”选项。2.在左侧菜单栏中,选择“激活”。3.点击“更改产品密钥”按钮,...

免费无限破解版游戏大全下载

靠谱助手、烧饼、葫芦侠修改器、八门神器、全能破解就是不用花钱就能买游戏里的商品安全岂见打开飞行模式内购更安全不会扣费手机先ROOT,之后下对应的破解软件,这样成功率比较高。虎牙YOWA云游戏...

视频相册制作软件免费版(视频相册制作下载)
视频相册制作软件免费版(视频相册制作下载)

电脑端的软件推荐第一个会声会影,会声会影这个软件简单易上手,制作出来电子相册很美,软件本身简单容易操作,没有水印。第二个推荐快剪辑,快剪辑也是一个制作电子相册非常好的软件,这个软件简单易上手,没有什么操作难度。第三个电脑端的软件编辑星,编辑...

2026-01-16 23:51 off999

win11官网(win11官网激活码多少钱)

https://www.microsoft.com/zh-cn/您可以在微软官方网站上找到Windows11系统的下载链接,然后按照官方指导进行下载。首先,打开您的浏览器并访问微软官方网站,然后找到...

vmospro虚拟机(vmospro虚拟机游戏闪退)

VMOSPRO可以用来运行多个安卓系统。因为VMOSPRO是一款虚拟机应用,可以在其中运行多个安卓系统,用户可以在不影响手机原系统的情况下,体验更多的安卓应用和功能。除了运行多个安卓系统外,VMO...

法国vs阿根廷(法国vs阿根廷决赛)

法国和阿根廷此前一共交手过12次,法国3胜3平6负。世界杯交手了3次,2胜1负。总体战绩法国还是处于下风的。最近一次交锋是2018世界杯八分之一决赛一场比赛中,欧洲劲旅法国队以4-3的比分击败了南美强...

百度手机助手下载2025官方正版

10年2012年参加的社会保险到2022年的参保对应月应该是整10年。我打个比方:某甲2012年10月份参加了社保,那么到了2022年10月份就是参加社保整整的10年。差不多十年左右吧。2022-20...

迅雷手机版高清在线(迅雷手机观看2018)

《海派甜心》是可米瑞智国际艺能有限公司出品的一部青春偶像剧。由林合隆执导,杨丞琳、罗志祥、李威主演。腾讯,爱艺奇上都可以观看

itunes官方下载win7版(windows7下载itunes哪个版本)
itunes官方下载win7版(windows7下载itunes哪个版本)

itunes最新版本已经不支持win10以下系统了,很多商店标的支持win7只是没改,官网已经写的很清楚了,最低Windows10版本16299.0或更高版本。64位版本的Windows需要iTunes64位安装程序,4...

2026-01-16 22:15 off999

免费pdf电子书下载网站(电子书pdf下载专业一点的网站)
  • 免费pdf电子书下载网站(电子书pdf下载专业一点的网站)
  • 免费pdf电子书下载网站(电子书pdf下载专业一点的网站)
  • 免费pdf电子书下载网站(电子书pdf下载专业一点的网站)
  • 免费pdf电子书下载网站(电子书pdf下载专业一点的网站)
腾讯电脑管家官方官网(腾讯电脑管家-软件中心)
  • 腾讯电脑管家官方官网(腾讯电脑管家-软件中心)
  • 腾讯电脑管家官方官网(腾讯电脑管家-软件中心)
  • 腾讯电脑管家官方官网(腾讯电脑管家-软件中心)
  • 腾讯电脑管家官方官网(腾讯电脑管家-软件中心)
破解版传奇游戏无限内购破解版

1/6分步阅读首先,我们先去将游戏软件下载下来,点击页面底部位置的下载按钮,开始进行下载。2/6然后,我们在自己的手机桌面上找到已经下载安装完成好了的游戏软件,点击进入。3/6进入到选择登录方式这个页...

手机浏览器flash插件(5.4英寸的屏幕)

1、在手机的应用商店中,进入到搜索页面之后,输入“Adobeflashplayer”,然后点击搜索,找到就可以安装了2、第二个可以直接通过网页搜索Adobeflashplayer,一定要注意版...

取消回复欢迎 发表评论: