python读取配置文件方式(ini、yaml、xml)

Python可以通过解析不同类型的配置文件(如ini、yaml、xml)来读取配置信息,下面我将详细讲解三种配置文件读取方式的完整攻略。

1. INI配置文件

INI是一种Windows操作系统常见的文件格式,它是一种键值对(key-value)格式的配置文件,使用.ini作为文件后缀。在Python中通常使用configparser模块来读取INI格式的配置文件。

步骤

  1. 安装configparser库
pip install configparser
  1. 编写配置文件

下面是一个典型的INI配置文件:

[Section1]
key1 = value1
key2 = value2
key3 = 3

[Section2]
key1 = value3
key2 = value4

该文件由两个section(Section1和Section2)组成,每个section下都有对应的key-value键值对。

  1. 读取配置文件
import configparser

config = configparser.ConfigParser()
config.read('config.ini')

print(config.sections())  # 打印所有section
print(config['Section1']['key1'])  # 打印特定section下的key的值
  1. 运行代码后,输出结果:
['Section1', 'Section2']
value1

示例

下面是一个使用INI配置文件的例子,该程序用于生成随机姓名:

  1. 首先,我们需要一个config.ini配置文件,用于指定姓氏和名字生成的设置。
[Name]
surnames = Zhang, Li, Wang, Zhao, Chen
male_names = Ming, Gang, Lei, Jun, Tao
female_names = Hui, Mei, Yan, Ling, Xin
  1. 读取config.ini配置文件中的特定键值对,生成随机姓名。
import random
import configparser

config = configparser.ConfigParser()
config.read('config.ini')

surnames = config['Name']['surnames'].split(', ')
male_names = config['Name']['male_names'].split(', ')
female_names = config['Name']['female_names'].split(', ')

def generate_name(surname: str, is_male: bool) -> str:
    name_list = male_names if is_male else female_names
    name = random.choice(name_list)
    return f"{surname}{name}"

print(generate_name(random.choice(surnames), True))
  1. 运行程序多次,输出结果可能会包括:
WangJun
ZhaoMing
ChenTao

2. YAML配置文件

YAML是一种层级结构的数据序列化格式,可以方便地表示复杂的数据结构,使用.yaml.yml作为文件后缀。在Python中通常使用PyYAML模块来读取和写入YAML格式的配置文件。

步骤

  1. 安装pyyaml库
pip install pyyaml
  1. 编写配置文件

下面是一个典型的YAML文件:

# list of surnames
surnames:
  - Zhang
  - Li
  - Wang
  - Zhao
  - Chen
# list of male names
male_names:
  - Ming
  - Gang
  - Lei
  - Jun
  - Tao
# list of female names
female_names:
  - Hui
  - Mei
  - Yan
  - Ling
  - Xin

该文件由三个键值对组成,每个键值对下都有一个列表,分别是姓氏、男性名字和女性名字。

  1. 读取配置文件
import yaml

with open("config.yml") as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

print(data['surnames'])
print(data['male_names'])
print(data['female_names'])

输出结果:

['Zhang', 'Li', 'Wang', 'Zhao', 'Chen']
['Ming', 'Gang', 'Lei', 'Jun', 'Tao']
['Hui', 'Mei', 'Yan', 'Ling', 'Xin']

示例

下面是一个使用YAML配置文件的例子,该程序用于生成随机姓氏和姓名:

  1. 首先,我们需要一个config.yml配置文件,用于指定姓氏和名字生成的设置。
# list of surnames
surnames:
  - Zhang
  - Li
  - Wang
  - Zhao
  - Chen
# list of male names
male_names:
  - Ming
  - Gang
  - Lei
  - Jun
  - Tao
# list of female names
female_names:
  - Hui
  - Mei
  - Yan
  - Ling
  - Xin
  1. 在Python程序中读取config.yml配置文件中的特定键值对,生成随机姓氏和姓名。
import random
import yaml

with open("config.yml") as f:
    data = yaml.load(f, Loader=yaml.FullLoader)

surnames = data['surnames']
male_names = data['male_names']
female_names = data['female_names']

def generate_name() -> str:
    surname = random.choice(surnames)
    name_list = male_names if random.random() < 0.5 else female_names
    name = random.choice(name_list)
    return f"{surname}{name}"

print(generate_name())
  1. 运行程序多次,输出结果可能会包括:
WangHui
LiJun
ChenYan

3. XML配置文件

XML是一种常见的数据交换格式,使用.xml作为文件后缀。在Python中通常使用ElementTree模块来读取和写入XML格式的数据。

步骤

  1. 编写XML文件

下面是一个典型的XML文件:

<config>
    <surnames>
        <surname>Zhang</surname>
        <surname>Li</surname>
        <surname>Wang</surname>
        <surname>Zhao</surname>
        <surname>Chen</surname>
    </surnames>
    <male_names>
        <name>Ming</name>
        <name>Gang</name>
        <name>Lei</name>
        <name>Jun</name>
        <name>Tao</name>
    </male_names>
    <female_names>
        <name>Hui</name>
        <name>Mei</name>
        <name>Yan</name>
        <name>Ling</name>
        <name>Xin</name>
    </female_names>
</config>

该文件由三个键值对组成,每个键值对下都有一个包含多个元素的列表。

  1. 读取配置文件
import xml.etree.ElementTree as et

tree = et.parse('config.xml')
root = tree.getroot()

surnames = [s.text for s in root.findall('./surnames/surname')]
male_names = [n.text for n in root.findall('./male_names/name')]
female_names = [n.text for n in root.findall('./female_names/name')]

print(surnames)
print(male_names)
print(female_names)

输出结果:

['Zhang', 'Li', 'Wang', 'Zhao', 'Chen']
['Ming', 'Gang', 'Lei', 'Jun', 'Tao']
['Hui', 'Mei', 'Yan', 'Ling', 'Xin']

示例

下面是一个使用XML配置文件的例子,该程序用于生成随机姓名:

  1. 首先,我们需要一个config.xml配置文件,用于指定姓氏和名字生成的设置。
<config>
    <surnames>
        <surname>Zhang</surname>
        <surname>Li</surname>
        <surname>Wang</surname>
        <surname>Zhao</surname>
        <surname>Chen</surname>
    </surnames>
    <male_names>
        <name>Ming</name>
        <name>Gang</name>
        <name>Lei</name>
        <name>Jun</name>
        <name>Tao</name>
    </male_names>
    <female_names>
        <name>Hui</name>
        <name>Mei</name>
        <name>Yan</name>
        <name>Ling</name>
        <name>Xin</name>
    </female_names>
</config>
  1. 读取config.xml配置文件中的特定键值对,生成随机姓名。
import random
import xml.etree.ElementTree as et

tree = et.parse('config.xml')
root = tree.getroot()

surnames = [s.text for s in root.findall('./surnames/surname')]
male_names = [n.text for n in root.findall('./male_names/name')]
female_names = [n.text for n in root.findall('./female_names/name')]

def generate_name() -> str:
    surname = random.choice(surnames)
    name_list = male_names if random.random() < 0.5 else female_names
    name = random.choice(name_list)
    return f"{surname}{name}"

print(generate_name())
  1. 运行程序多次,输出结果可能会包括:
LiJun
ZhaoYan
ChenXin

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python读取配置文件方式(ini、yaml、xml) - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • Pycharm学习教程(4) Python解释器的相关配置

    下面我来详细讲解“Pycharm学习教程(4) Python解释器的相关配置”这个主题。 Pycharm学习教程(4) Python解释器的相关配置 什么是Python解释器? 在学习Python的过程中,Python解释器是一个需要熟悉的概念。Python解释器是执行Python代码的软件程序,它将Python代码翻译成计算机容易理解的语言,从而让计算机能…

    python 2023年5月18日
    00
  • python实现某考试系统生成word试卷

    生成Word试卷的步骤分为以下几个部分: 1. 数据准备 首先需要准备试题数据,可以将试题的内容存储在Excel表格中,每列对应一种题型,每行对应一道题目,可以包括题干、选项、答案、难度等信息。然后使用Python的pandas库读取Excel数据,使用pandas提供的数据类型将数据存储在内存中。 2. 模板设计 接着需要设计试卷模板,包括试卷的封面、页眉…

    python 2023年5月13日
    00
  • python 搭建简单的http server,可直接post文件的实例

    在Python中,我们可以使用http.server模块来搭建一个简单的HTTP服务器。本文将介绍如何使用http.server模块搭建一个简单的HTTP服务器,并提供两个示例,演示如何直接POST文件。 1. 搭建简单的HTTP服务器 首先,我们需要使用http.server模块搭建一个简单的HTTP服务器。以下是一个示例,演示如何使用http.serve…

    python 2023年5月15日
    00
  • Python3 xml.etree.ElementTree支持的XPath语法详解

    在Python3中,可以使用xml.etree.ElementTree模块解析XML文档。XPath是一种用于在XML文档中查找信息的语言,xml.etree.ElementTree模块支持XPath语法。本文将详细讲解Python3中xml.etree.ElementTree支持的XPath语法,包括两个示例。 XPath语法 XPath是一种用于在XML…

    python 2023年5月15日
    00
  • php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串

    在PHP中,使用正则表达式可以方便地提取字符串中尖括号、小括号、中括号、大括号中的字符串。以下是一个详细的攻略,包括基本语法和示例说明。 1. 正则表达式基本语法 在PHP中,使用preg_match_all()函数可以方便地提取字符串中尖括号、小括号、中括号、大括号中的字符串。以下是一个基本的正则表达式示例: $pattern = "/[<…

    python 2023年5月14日
    00
  • Python实现的用户登录系统功能示例

    我来给你详细讲解Python实现的用户登录系统功能示例的完整攻略。 1. 系统功能介绍 在我们的用户登录系统中,我们需要实现以下功能: 用户注册:用户输入账号和密码,将其存入数据库中。 用户登录:用户输入账号和密码,系统进行验证,若验证成功则允许用户进入系统。 修改密码:用户可以在登录状态下修改密码。 2. 实现步骤 2.1 安装所需包 我们需要安装以下包来…

    python 2023年5月30日
    00
  • python库JsonSchema验证JSON数据结构使用详解

    Python库JsonSchema验证JSON数据结构使用详解 什么是JsonSchema JsonSchema是一种用于描述JSON数据结构的验证语言,类似于XML的DTD,可以用于验证JSON数据的结构是否符合特定的规范。JsonSchema的文档格式是JSON,所以本身也是JSON数据。 安装JsonSchema库 JsonSchema库可以使用pip…

    python 2023年6月3日
    00
  • python 字符串详解

    Python 字符串详解 字符串是Python中最常用的数据类型之一。在本文中,我们将共同探讨Python中字符串的基本概念、常见操作以及字符串格式化等方面。 字符串的定义 Python字符串是用一对引号(单引号或双引号)括起来的文本数据,例如: str1 = ‘This is a string.’ str2 = "这是一个字符串。" 另…

    python 2023年6月5日
    00
合作推广
合作推广
分享本页
返回顶部