python操作ini文件

对整个configparser研究了一次,除了初始化没去细究,因为感觉没啥用
python写出来的ini有空格,是不符合标准的,虽然能解决
python会将读出来的变量变成小写,是不符合标准的,虽然也能解决
另外python支持%(变量名)s的语法,据我所知也是不符合标准的
如果要让ini文件通用,建议不要用python操作
常用方法都在下方了

# !/usr/bin/env python
# -*-coding:utf-8 -*-

"""
@File       : ini_reader.py
@Time       :2022/10/31 下午12:02
@author     :umbrella
@email      : 2260334995@qq.com
@version    :python 3.8
@Description:
"""
import configparser

# {True: ['1', 'yes', 'true', 'on'], False: ['0', 'no', 'false', 'off']}
ini_reader = configparser.ConfigParser()
# 禁止转小写
ini_reader.optionxform = lambda option: option

# 执行后,init可以使用字典的形式访问,类似于{"section": {"option": "val"}},但是如果遇到%()s的,会报错
# 对于固定的ini,可以直接字典操作,而对于不是的,则要用下方的方式
ini_reader.read('save.ini')

# 增加section,类方法
# if not ini_reader.has_section('test'):
#     ini_reader.add_section('test')

# 字段方式
if 'test' not in ini_reader:
    ini_reader['test'] = {}

# 设置值,只更新内存,并不会写入文件,可以重复更新
# 需要section存在,option可以不存在
ini_reader.set(section='test', option='type', value='100%(aa)s')

# print(ini_reader['test']['type'])

# 获取所有keys
print(ini_reader.sections())

# 获取keys下的value,fallback为默认值或者报错
# rows: 如果为False,读出来的str会被替换,
#     ini格式为%(xxx)s, s是字符串的意思,只支持s
#     vars格式为{"xxx": "???"}
print(ini_reader.get('test', 'type', raw=False, vars={"aa": "222"}, fallback=None))

# 返回某个sections下的所有数据
print(ini_reader.items('test', raw=False, vars={"aa": "222"}))

# 返回_defaults,大概是默认值清单,init时设置的
print(ini_reader.defaults())

# 是否存在一些配置
# print(ini_reader.has_section('character2'))
# print(ini_reader.has_option('character', 'type'))

# 返回某个section下的option列表
print(ini_reader.options(section='test'))

# 从字典读取成为ini对象,{str: {str: any}},还有read_str
ini_reader.read_dict(dictionary={"character": {"type": 2, "hp": 100}})

# 删除一些值
# ini_reader.remove_option('character', 'hp')
# ini_reader.remove_section('character')

# 保存
with open('save.ini', 'w') as f:
    ini_reader.write(f, space_around_delimiters=False)

posted @ 2022-10-31 17:32  umbrella~  阅读(455)  评论(0编辑  收藏  举报