网络编程
位置:首页>> 网络编程>> Python编程>> Python ini配置文件示例详解

Python ini配置文件示例详解

作者:Edisonyao  发布时间:2023-08-24 09:07:36 

标签:python,ini,配置文件

INI介绍

INI是英文“初始化”(initialization)的缩写,被用来对操作系统或特定程序初始化或进行参数设置。由节(section)、

键(key)、值(value)构成。在windows系统中有很多INI文件,例如“System32.ini”和“Win.ini”,相信大家并不陌生。Python

中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。

关于configparser

在python2中该模块名为Configparser,到python3才改为configparser,该模块是用来解析ini配置文件的解析器。

其作用就是使用模块中的RawConfigParser()、ConfigParser()、SafeConfigParser()这三个方法(任选一种),创建一

个对象使用对象的方法对指定的配置文件做增删改查操作。

本次使用的python版本为3.8,编译器使用pycharm。

INI文件格式

Python ini配置文件示例详解

INI配置文件组成:

section:表示一个区块,由方括号及方括号中的名称组成,section的范围为当前方括号到下一个方括号的内容,如“DEFAULT”,“select”,“connect_mysql”。

大小写和空格检查:section中的名称在保存和获取的时候是原样保存和获取的,即大小写不一样或者空格不一样等都是不同的section;重复性检查:同一个配置文件中section名称不允许重复。

option:表示section中的配置项,由key、分隔符和value组成的键值对,如“select”下的“broswer = Chrome”。

大小写检查:key是大小写不敏感的,保存进文件的时候会自动将key小写保存,但value是大小写敏感的;空格检查:通过key获取value时,会自动将文件中的key和value前后空格去掉再进行匹配,即文件中保存为' broswer = Chrome '时,用'broswer'也可以获取到对应的value值'Chrome';跨多行检查:key是不能跨行的,但是value可以跨行,只要第二行及之后行的缩进与第一行不同即可,一直到下一个option为止;重复性检查:和section一样,同一section下的key是不允许重复的;分隔符:可以是等号“=”或者冒号“:”。

注释:行注释用井号“#”或者分号“;”表示,特别需要注意的是必须得是行开头(前面可以有空格),用在行中间的就不会算作是注释了。

DEFAULT:这是一个特殊的section,会用作其他section的option取不到值时的备用值,或者可以理解为它是一个root,其他的section都是它的子section,但不是必须提供的。

读取配置文件

import os
import configparser

conf = configparser.ConfigParser() # 类的实例化

curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')

conf.read(path,encoding="utf-8")
value = conf['select']['url']
print("通过read方法取得的值为:",value)

value = conf.get('login','username')
print('通过get方法取得的值:',value)

value = conf.items('login') # 读取一个section中的所有数据,返回一个列表
print("通过items方法取得的值:",value)

value = conf.getint('connect_mysql','port') # 指定读取数据的类型
print("指定数据类型取出的值:",value)

section = conf.sections() # 读取配置文件中所有section
print(section)

运行结果

Python ini配置文件示例详解

注意:配置文件注释有中文的,在python3中要加上参数encoding="utf-8",不然会报错。

conf.read(path,encoding="utf-8")

写入配置文件

import os
import configparser

conf = configparser.ConfigParser() # 类的实例化

curpath = os.path.dirname(os.path.realpath(__file__))
path = os.path.join(curpath,'read.ini')

conf.add_section('login') # 添加一个新的section
conf.set('login','username','admin')
conf.set('login','password','123123')   # 往配置文件写入数据
conf.write(open(path,'a'))  # 保存数据

运行以后查看配置文件,可以看到新的section已经写入到文件中。

Python ini配置文件示例详解

write写入常用的两种方式,第一种是删除原文件内容,重新写入:w

conf.write(open(path,'w'))

第二种是在原文件基础上继续写入内容,追加模式写入:a

conf.write(open(path,'a'))

来源:https://www.cnblogs.com/Sweettesting/p/15965528.html

0
投稿

猜你喜欢

  • 我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢?重复的数据可能有这样两种情况,第一
  • MySQL Group By用法我们现在回到函数上。记得我们用 SUM 这个指令来算出所有的 Sales (营业额)吧!如果我们的需求变成是
  • asp中fso怎样判断一个盘上是否有文件,实例代码,需要的朋友可以试试:<% dim objfolder dim 
  •   昨天晚上才发现已经出了jQuery的1.3版本,于是下载下来,把原来一个兄弟翻译的1.2.6的文档移植到了1.3中,点击这里可
  • 有些时间没更新blog了,这两天为了更新<code collection>,于是重写了语法高亮的模块,这次是一个引擎,你可以根据
  • 不可否认,阿里巴巴走得越来越快也越来越好。技术的成熟让很多B2B B2C网站都在跟风学习它们。在这里我就来说一说它的搜索效果吧。如图所示:&
  • 【MySql常用命令】1:使用SHOW语句找出在服务器上当前存在什么数据库:mysql> SHOW DATABASES;2:创建一个数
  • 判断服务器是否安装了某种asp组件,比较常用的代码如下:代码如下:<% '功能:检查是否存在系统组件或组件是否安装成功 
  • 一、PsutilPython当中的Psutil模块是个跨平台库,它能够轻松获取系统运行的进程和系统利用率,包括CPU、内存、磁盘、网络等信息
  • 客户端: <%@ Page Language="C#" AutoEventWireup="true&qu
  • 或者说有一条命令 hostname [string],当string是不包含2950时,是true,包含2950时是false。使用Exce
  • 原理 采集程序实际上是通过了XML中的XMLHTTP组件调用其它网站上的网页。比如新闻采集程序,很多都是调用了sina的新闻网页,并且对其中
  • 阅读系列教程上一篇:FrontPage2002简明教程二:文字与图像的处理通常网页的布局使用到的是FrontPage 2002中的表格和框架
  • 因为这两天在弄自己的一个问答程序www.sosoask.com ,结果发现开发人员把我的存储过程加密了,郁闷,还好找到解决方法了,现在共享下
  • 想做个和IBM公司一样的网站LOGO,试了半天也没有做出来,郁闷之下,只好求高手帮助!先在这里谢谢了!方法一1、写上IBM,调节字号颜色2、
  • 一、修改密码1.1 创建修改密码控制器运行命令php artisan make:controller Auth/PasswordContro
  • class和id的命名,如果合理,可以使得文档具有清晰的结构我们现在解决办法就是使用现有的元素,通过给他们id或class而得到额外的信息。
  • 1 Video介绍引用我翻译文档《在HTML5页面中嵌入音频和视频》中的介绍文字:“当今,在网页上嵌入视频且所有用户不管使用任何浏览器或者操
  • 在线阅读与印刷品阅读有着很大的不同,原因之一是屏幕会导致注意力问题。文字很难成为重点,而闪烁的横幅、明亮的图片又更加会转移对实际的博客内容的
  • 背景尽管到目前为止HTML4和XHTML1仍能够很好地满足我们的要求,但是它们仍然存在不足。为了满足用户丰富的基于Web应该程序的需要,达到
手机版 网络编程 asp之家 www.aspxhome.com