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

yizhihongxing

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日

相关文章

  • Python中栈、队列与优先级队列的实现方法

    栈、队列和优先级队列是计算机科学中常用的数据结构,它们可以帮助我们有效地管理和操作数据。Python中提供了多种实现这些数据结构的方法,本文将介绍Python中栈、队列和优先级队列的实现方法。 栈的实现方法 栈是一种后进先出(LIFO)的数据结构,它用列表或者collections模块中的deque实现。以下是一个示例: # 使用列表实现栈 stack = …

    python 2023年5月13日
    00
  • python爬虫面试宝典(常见问题)

    让我来为你详细讲解“python爬虫面试宝典(常见问题)”的攻略: 一、前言 “python爬虫面试宝典(常见问题)”是一本介绍Python爬虫技术的书籍,主要针对正在求职或者即将要求职的爬虫工程师。本书主要从入门到进阶,覆盖了爬取、解析、存储等几个方面。下面,我将按照这几个方面为你逐一讲解。 二、爬取 对于爬虫工程师而言,爬取是第一步。本书介绍了多种爬取技…

    python 2023年5月13日
    00
  • Python随机数函数代码实例解析

    Python随机数函数代码实例解析 随机数在编程中经常使用,Python内置了多个随机数函数,本文将对常用的随机数函数进行详细的讲解,同时提供两个示例进行说明。 random模块常用函数 Python中的随机数生成依赖于random模块,以下是random模块中常用的函数: random():用于生成[0, 1)的浮点数。 randint(a, b):用于生…

    python 2023年5月14日
    00
  • 实战分布式医疗挂号系统开发医院科室及排班的接口

    实战分布式医疗挂号系统开发医院科室及排班的接口 简介 本攻略旨在介绍如何开发实现一个分布式医疗挂号系统中的医院科室及排班的接口。通过接口,可实现医院科室的查询、增加、修改、删除等功能,并支持医生或管理员进行排班操作。 技术选型 为实现分布式架构,使用Spring Cloud作为微服务框架;为提高性能,使用Redis作为缓存技术;为方便数据操作,使用MyBat…

    python 2023年5月14日
    00
  • python实现字符串连接的三种方法及其效率、适用场景详解

    Python实现字符串连接的三种方法及其效率、适用场景详解 在Python中,字符串连接是一个常见的操作,我们可以通过多种方式实现字符串连接。本文将详细讲解Python中实现字符串连接的三种方法,并对它们的效率、适用场景进行分析。 三种方法 1. 使用”+”号连接字符串 将多个字符变量通过”+”号连接起来,形成一个新的字符串。示例如下: s1 = ‘Hell…

    python 2023年6月5日
    00
  • Python实现自动上京东抢手机

    Python实现自动上京东抢手机的完整攻略 在京东抢购手机时,由于人数众多,很难抢到心仪的手机。本攻略将介绍如何使用Python实现自动上京东抢手机。 1. 安装Selenium和ChromeDriver Selenium是一个自动化测试工具,可以模拟用户在浏览器中的操作。我们可以使用Selenium来模拟用户在京东网站上的操作。在使用Selenium之前,…

    python 2023年5月15日
    00
  • Python群发邮件实例代码

    当我们需要向多个人发送相同内容的邮件时,手动逐一发送邮件显然是一件非常繁琐的事情。Python的smtplib和email库提供了一种便捷的方式来群发邮件,需要我们完成以下步骤: 1.准备收件人邮箱信息和邮件正文信息。 2.使用smtplib库连接邮件服务器,认证登录账号。 3.创建EmailMessage对象,设置邮件标题、发送者、正文等信息。 4.发送邮…

    python 2023年6月3日
    00
  • 解析python中的jsonpath 提取器

    在Python中,我们可以使用jsonpath提取器来从JSON数据中提取特定的数据。jsonpath是一种类似于XPath的语言,它允许我们使用类似于XPath的表达式来访问JSON数据的特定部分。在本攻略中,我们将介绍如何使用Python中的jsonpath提取器来提取JSON数据中的特定部分。 安装jsonpath-ng库 在使用jsonpath提取器…

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