Python ConfigParser:配置文件变得简单

如果你想构建对更新稳健且易于管理的 Python 项目,ConfigParser 是一个不错的选择。

本篇文章将带你了解如何使用 configparser 模块为你的应用程序读取和写入配置文件。

什么是 Python ConfigParser 模块?

配置文件,俗称配置文件,常用于配置操作系统和应用程序的参数、选项和设置。

配置文件存储应用程序在启动时读取并用作其逻辑的一部分的键值对。

ConfigParser 是一个 Python 模块,它允许以简单的方式创建配置文件。使用 ConfigParser,你还可以读取或更新配置文件的内容。使用 ConfigParser 创建的配置文件的结构类似于 Microsoft Windows INI 文件的结构。

将配置与代码分离将为你省去从头开始编译和重新部署代码以进行配置更改的麻烦。

如何使用 Python ConfigParser 编写 INI 配置文件

让我们看一个简单的配置文件,如下所示。将其保存在你的机器上名为sample_config.ini的文件中。

[DEFAULT]
serverthreads = 45
content_type = text/html
content_length = 1024
autoscaling = no
[website_name.org]
username = your_name
login_mail = your_mail
[private.data.com]
password = secret_password
autoscaling = yes

在配置文件中,你将在方括号中看到一个部分的名称。节是配置文件的基础。

在每个部分下,键值对用赋值符号“=”分隔。每个部分下的每个键值都必须是唯一的。

现在让我们看看如何使用 configparser 创建这个配置文件:

import configparser
config = configparser.ConfigParser()
config['DEFAULT'] = { 'serverthreads' : 45, 'content_type' : 'text/html', 'content_length' : 1024 }
config['DEFAULT']['autoscaling'] = 'no'
config['website_name.org'] = dict()
config['website_name.org']['Username'] = 'your_name' 
config['website_name.org']['login_mail'] = 'your_mail'
config['private.data.com'] = {}
private = config['private.data.com']
private['Password'] = 'secret_password'
private['autoscaling'] = 'yes'
with open('generated_config.ini', 'w') as configfile:
    config.write(configfile)

上面的代码示例创建一个名为generate_config.ini的配置文件。

Python 如何处理配置文件

从上一节的示例中可以看出,你可以像处理字典一样处理配置文件。

但是,重要的是要注意区别……

配置部分下的所有键都不区分大小写:你可以通过验证以下表达式是否都返回布尔值True来确认这一点。

你可以在前面生成配置文件的 Python 代码的末尾添加以下代码。

print('ServerThreads' in config['DEFAULT'])
print('serverthreads' in config['DEFAULT'])
[output]
True
True

如何使用 Python ConfigParser 读取 INI 配置文件

现在我们知道如何创建配置文件,是时候学习如何读取配置文件了。

我们将使用 Python shell 来帮助我们轻松地测试不同的表达式。

你可以简单地从初始化配置解析器开始。请注意,在不读取任何配置文件的情况下,配置对象会返回一个空的部分列表。

import configparser
config = configparser.ConfigParser()
config.sections()

现在使用 config 对象的 read 方法来读取我们创建的配置文件的内容:

config.read('generated_config.ini') 

然后,你可以按如下方式获取部分名称,尽管 DEFAULT 部分不会显示在列表中:

config.sections()

运行输出:

Python ConfigParser:配置文件变得简单

从 INI 文件中读取配置文件后,让我们对配置文件执行一些判断语句

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
'unknown_property' in config
'your_name' in config['website_name.org']['username']
config['private.data.com']['password']
for key in config['DEFAULT']:
    print(key)

运行输出:

Python ConfigParser:配置文件变得简单

如何使用 ConfigParser 从配置文件中获取值

与字典类似,你可以使用get() 方法来检索与键对应的值。

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
website = config['website_name.org']
mail = website.get('login_mail')
print(mail)

运行输出:

Python ConfigParser:配置文件变得简单

此外,get() 方法还允许一个回退值,如果在该部分下找不到请求的键,则返回一个值:

website.get('login_date', fallback='No login_date found') 
Python ConfigParser:配置文件变得简单

重要的是要注意 DEFAULT 部分与其他部分相比具有层次优势,并且与 DEFAULT 部分中的键对应的值将优先于备用值

website.get('content_type', fallback='No login_date found') 
Python ConfigParser:配置文件变得简单

使用 Python ConfigParser 更新配置文件中的值

使用 configparser 更新配置文件中的键名

import configparser
config = configparser.ConfigParser()
config.read('generated_config.ini')
config['private.data.com']['password'] = 'new_password'
config['website_name.org']['login_date'] = 'new_date'
config['new_section'] = {'user_port': 4098, 'user_request': 'yes'}
with open('generated_config.ini', 'w') as configfile:
     config.write(configfile)

运行查看一下文件是否更新

Python ConfigParser:配置文件变得简单

结论

在本篇文章中,你学习了:

  • 什么是配置文件。
  • Python configparser 模块如何让你读取、写入和更新配置文件。

使用 configparser,你现在知道如何简化管理应用程序配置的方式。

如果你发现我的任何文章有帮助或有用,麻烦点赞或者转发。 谢谢!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人,不代表IT壹频道。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。转载请注明出处:https://www.1pindao.com/keji/4347.html

(0)
上一篇 2022年 11月 9日 14:43:23
下一篇 2022年 11月 9日 15:10:29

相关推荐

  • “请慢一点”——2022年人工智能的7大故事

    今年,人工智能专家不止一次重复了一句熟悉的话:“请(脚步)慢下来。” 2022年的人工智能新闻是快速而无情的; 一旦你知道了人工智能的现状,一篇新论文或新发现就会让这种理解过时。 在2022年,我们可以说达到了生成式人工智能的极限。生成式人工智能可以生成由文本、图像、音频和视频组成的创造性作品。今年,经过10年的研究,深度学习人工智能出现了,并开始进入商业应…

    2022年 12月 27日 智能科技
    1.0K
  • 人工智能解锁人类生命活动的终极奥秘?我们距离永生还有多久

    众所周知,蛋白质是一切生命的物质基础,人体的一切生命活动,本质上是蛋白质功能的体现。如果人工智能能够帮我们破解出蛋白质的密码,人类距离永生还有多久? 关注头条“溪谷科技号”,带你漫步于浪潮之巅。欢迎点赞、评论、转发,发表你的看法。 蛋白质分析的革新 一种新的人工智能工具可以帮助研究人员发现以前未知的蛋白质并设计全新的蛋白质。如果加以利用,它可以更有效帮助疫苗…

    2023年 1月 28日
    804
  • 7个冷门硬核的神仙网站,个个都是宝藏,真的会让你拍手叫好

    前几期给大家推荐了很多软件,今天就来换换口味,给大家分享7个冷门硬核的神仙网站,个个都是宝藏,真的会让你拍手叫好。 01AirPano环游世界 网址:https://www.airpano.org.cn/ 这个网站号称可以在线环游世界,它拍摄和收集了来自世界各地知名景点的全景照片和视频,可以自由地进行观看。 因为是全景的图片和视频,所以我们可以随意缩放,并且…

    2023年 1月 18日 智能科技
    677
  • 2023年人工智能继续增长的三个领域

    今年秋天,一些大型的科技公司解雇了不少人工智能(AI)和机器学习(ML)的员工,包括Meta、Twitter和Amazon。 这引起了行业的高度紧张。事实上并没有那么严重,多个行业的人工智能专家认为,即使接下来陷入经济衰退,人工智能创新仍然能够继续,很多公司会相应地为人工智能调整预算和优先事项。 这些行业领导者都非常明确地强调了人工智能在过去一年中蓬勃发展并…

    2022年 12月 14日
    1.0K
  • 智能家居是什么?一文带你从小白开始速通

    清晨,当你准备起床时,轻轻触动“起床”模式,床帘慢慢收起,舒缓的音乐缓缓奏起,厕 所的灯光自动点亮,水温加热到合适的温度,厨房小机器人早已为你备好了早餐,开启美好 的一天。而这些,只需要一个面板就可以轻松操控家中所有的电器。那些在科幻片中充满着 舒适与惬意的生活场景,随着科技的发展与进步,已经逐渐走入了人们的日常生活中。 In the morning, wh…

    2022年 11月 15日 智能科技
    1.3K
  • 用AI写出来的故事是什么样子的?

    自动化机器人取代了生产线上的工人,那么AI机器人能取代写文章的人吗? 未来十年互联网最避不开的话题之一就是人工智能到底还能做出多大的变革,要知道每一次变革都会取代一批原有的市场占领者。比如当年风靡一时的虚拟农场,我上大学那会宿舍里的哥们半夜起来偷菜,现在校内网都不知道凉了多少年了。再比如我们以前那会在网上抒发心情用的都是QQ签名,在网吧琢磨半天,最终用键盘敲…

    2022年 12月 20日 智能科技
    1.0K