转 python3 读取 ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置。下面通过一个实例来看下如何写入、读取ini配置文件.
需要的配置文件是:
1 [path]
2 back_dir = /Users/abc/PycharmProjects/Pythoncoding/projects/
3 target_dir = /Users/abc/PycharmProjects/Pythoncoding/
4
5 [file]
6 back_file = apitest
import os
import time
import configparser
# back_path = "/Users/abc/PycharmProjects/Pythoncoding/projects/"
# back_file ="hello.txt"
# 可以写为读取配置文件
# 第一步:创建conf对象
conf = configparser.ConfigParser()
# 第二步:添加section、options的值
conf.add_section("path")
conf.set("path","back_dir","/Users/abc/PycharmProjects/Pythoncoding/projects/") # option
conf.set("path","target_dir","/Users/abc/PycharmProjects/Pythoncoding/") # option
conf.add_section("file")
conf.set("file","back_file","apitest")
# 第三步:写入文件
with open("path.ini",'w')as conffile:
conf.write(conffile)
# 第四步:读取配置文件中的section、options的值
back_dir =conf.get('path','back_dir')
back_file =conf.get("file","back_file")
target_dir =conf.get("path","target_dir")
# 执行zip压缩命令,将apitest目录下所有文件打包压缩
source =[back_dir,back_file]
target_file=target_dir+time.strftime("%Y%m%d%H%M%S")+'.zip'
zip_commond ="zip -qr \"%s\" \"%s\""%(target_file,''.join(source))
print(zip_commond)
if os.system(zip_commond)==0:
print('Successful backup to',target_file)
else:
print('Backup Failed')
print(conf.sections())
#['path', 'file']
print(conf.options('path'))
#['back_dir', 'target_dir']
print(conf.items('path'))
#[('back_dir', '/Users/abc/PycharmProjects/Pythoncoding/projects/'), ('target_dir', '/Users/abc/PycharmProjects/Pythoncoding/')]
笔记:
模块常用函数:
1)读取配置文件
read(filename) 直接读取ini文件内容
sections() 得到所有的section,并以列表的形式返回
options(section) 得到该section的所有option
items(section) 得到该section的所有键值对
get(section,option) 得到section中option的值,返回为string类型
getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。
2)写入配置文件
add_section(section) 添加一个新的section
set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。
如何使用Python3读写INI配置文件
ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。
INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。
通过它,可以将经常需要改变的参数保存起来(而且还可读),使程序更加的灵活。
我先给出一个ini文件的示例。
[School]
ip = 10.15.40.123
mask = 255.255.255.0
gateway = 10.15.40.1
dns = 211.82.96.1
[Match]
ip = 172.17.29.120
mask = 255.255.255.0
gateway = 172.17.29.1
dns = 0.0.0.0
这个配置文件中保存的是不同场合下的IP设置参数。
下面将以生成和读取这个配置文件为例,进行讲解。
Python(v3)读取方法
首先,Python读取ini配置需要用到ConfigParser包,所以要先加载它。
import configparser
之后我们需要载入配置文件。
config=configparser.ConfigParser()
#IpConfig.ini可以是一个不存在的文件,意味着准备新建配置文件。
config.read("IpConfig.ini")
接下来,我们可以使用configparser.add_section()向配置文件中添加一个Section。
#添加节School
config.add_section("School")
注意:如果文件中已经存在相应的项目,则不能再增加同名的节。
然后可以使用configparser.set()在节School中增加新的参数。
#添加新的IP地址参数
config.set("School","IP","192.168.1.120")
config.set("School","Mask","255.255.255.0")
config.set("School","Gateway","192.168.1.1")
config.set("School","DNS","211.82.96.1")
你可以以同样的方式增加其它几项。
#由于ini文件中可能有同名项,所以做了异常处理
try:
config.add_section("Match")
config.set("Match","IP","172.17.29.120")
config.set("Match","Mask","255.255.255.0")
config.set("Match","Gateway","172.17.29.1")
config.set("Match","DNS","0.0.0.0")
except configparser.DuplicateSectionError:
print("Section 'Match' already exists")
增加完所有需要的项目后,要记得使用configparser.write()进行写入操作。
config.write(open("IpConfig.ini", "w"))
以上就是写入配置文件的过程。
接下来我们使用configparser.get()读取刚才写入配置文件中的参数。读取之前要记得读取ini文件
ip=config.get("School","IP")
mask=config.get("School","mask")
gateway=config.get("School","Gateway")
dns=config.get("School","DNS")
print((ip,mask+"\n"+gateway,dns))
下面是一个完整的示例程序,他将生成一个IpConfig.ini的配置文件,再读取文件中的数据,输出到屏幕上。
# -*- coding: utf-8 -*-
import configparser
#读取配置文件
config=configparser.ConfigParser()
config.read("IpConfig.ini")
#写入宿舍配置文件
try:
config.add_section("School")
config.set("School","IP","10.15.40.123")
config.set("School","Mask","255.255.255.0")
config.set("School","Gateway","10.15.40.1")
config.set("School","DNS","211.82.96.1")
except configparser.DuplicateSectionError:
print("Section 'School' already exists")
#写入比赛配置文件
try:
config.add_section("Match")
config.set("Match","IP","172.17.29.120")
config.set("Match","Mask","255.255.255.0")
config.set("Match","Gateway","172.17.29.1")
config.set("Match","DNS","0.0.0.0")
except configparser.DuplicateSectionError:
print("Section 'Match' already exists")
#写入配置文件
config.write(open("IpConfig.ini", "w"))
ip=config.get("School","IP")
mask=config.get("School","mask")
gateway=config.get("School","Gateway")
dns=config.get("School","DNS")
print((ip,mask+"\n"+gateway,dns))
Python读取ini文件还是十分简单的,这里我给出的只是一些简单的使用方法,如果想用更高级的功能,比如和注释有关的功能。可以参考Pyhton官方文档
转 python3 读取 ini配置文件的更多相关文章
- python3笔记-读取ini配置文件
在代码中经常会通过ini文件来配置一些常修改的配置.下面通过一个实例来看下如何写入.读取ini配置文件. 需要的配置文件是: [path] back_dir = /Users/abc/PycharmP ...
- Python读取ini配置文件(接口自动测试必备)
前言 大家应该接触过.ini格式的配置文件.配置文件就是把一些配置相关信息提取出去来进行单独管理,如果以后有变动只需改配置文件,无需修改代码. 特别是后续做自动化的测试,代码和数据分享,进行管理.比如 ...
- bat 读取 ini 配置文件
bat 读取 ini 配置文件 config.ini: abc=abc a=a localpath=D:\local\path .bat: @echo off setlocal enabledelay ...
- python读取ini配置文件的示例代码(仅供参考)
这篇文章主要介绍了python读取ini配置文件过程示范,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 安装 pip install configp ...
- 读取ini配置文件 及 UI对象库
读取ini配置文件 配置项 读取API 写入API 实战:UI 对象库 读取ini配置文件 配置项 在每个 ini 配置文件中,配置数据会被分组(比如下述配置文件中的"config" ...
- 【python3】configparser读取ini配置文件
在应用过程中,发现下面这个问题: cf=configparser.ConfigParser()读取配置文件时,如果数据包含%这们析特殊符号,就会报出上面的错误,使用cf = configparser. ...
- python3读取sqlyog配置文件中的MySql密码
这个人有什么目的?: 我多多少少听过一些安全圈的大牛说到类似的思路,大意是可以通过扫描各种程序和服务的配置文件(比如SVN的文件,RSYNC的配置文件等), 从中发现敏感信息,从而找到入侵的突破口.沿 ...
- Python读取ini配置文件的方式
python configparser模块 ConfigParser模块在python中用来读取配置文件,配置文件的格式跟windows下的ini配置文件相似,可以包含一个或多个节(section ...
- C# 读取Ini配置文件类
配置文件 为fileName.ini 的文件 第一行必须为空,不然读不出值 [section1] key=value key2=value ......... [section2] key=value ...
随机推荐
- Redis 系列(02)数据结构
目录 Redis 系列(02)数据结构 Redis 系列目录 1. String 1.1 基本操作 1.2 数据结构 1.3 Redis数据存储结构 2. Hash 2.1 基本操作 2.2 数据结构 ...
- 搭建 webpack、react 开发环境(二)
配置处理样式文件 到目前为止,整个工程的配置已经差不多了,对于 React 更多相关的配置将在后面继续介绍,现在我们先来对目前的工程进行优化. 前面我们学习了搭建 webpack.react 开发 ...
- js的this、bind、call、apply个人领悟
this 1.非箭头函数: 如果是该函数是一个构造函数,this指针指向一个新的对象 在严格模式下的函数调用下,this指向undefined 如果是该函数是一个对象的方法,则它的this指针指向这个 ...
- go语言从例子开始之Example2.类型
Go 拥有各值类型,包括字符串,整形,浮点型,布尔型等.下面是一些基本的例子. Example: values.go package main import "fmt" func ...
- go语言从例子开始之Example18_1.结构体中定义方法
Go 支持在结构体类型中定义方法 . Example: package main import "fmt" type product struct{ name string num ...
- 使用Makefile编译Erlang
#配置选项,可以是DEBUG和RELEASE CONFIG ?= RELEASE #语言配置,可以是chs(简体中文).cht(繁体中文)等等 Region ?= chs #源文件目录 SOURCE_ ...
- 【C/C++】知识点系统复习 (第一周)
2018/12/18 周二 1. C++内存布局分为几个区域,每个区域有什么特点? 主要可以分为 5 个区域, (1) 栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值等.其操作方式类似于数 ...
- Python第一章概述与环境安装
Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...
- Python中的try-finally
>>> try: ... raise KeyboardInterrupt ... finally: ... print('Goodbye, world!') ... Goodbye, ...
- sparksql笔记
1.sparksql是Spark用来处理结构化数据的一个模块,它提供了两个抽象DataFrame和DataSet并且作为分布式SQL查询引擎的作用. Hive SQL转换成MapReduce然后提交到 ...