ConfigParser库的使用及遇到的坑
背景:这几天想在接口测试中增加logging打印功能,在testerHome正好发现有人分享自己的接口框架,看了之后其中用到ConfigParser,然后自己写了遇到一个坑,写下来用于备注吧。
首先就描述一下坑:
ConfigParser主要就是读写配置文件,文件格式包括.ini,.conf。
我是这么想的在本地新建.text文本格式,把配置书写进去然后修改成.ini或者.conf拖拽进eclispe中,然后read配置文件,一直报错,我一直都以为书写逻辑有问题。
实在没办法就删除配置文件,使用write()去写,然后read发现可以,一直不知道是什么原因。
第一,先介绍write方法
首先是先实例化ConfigParser()这个类,然后增加section,我把理解一个标签,在这个标签下什么东西,当然可以添加多个标签,如图就是配置文件的截图:
其中[time]和[place]就是2个不同的标签,其中各个标签下的内容用类似key-value的形式表示,这里就用到set(section,option,value)方法,section对应的就是标签,option对应就是key,value就是key对应的值。如果想多次多次只要多次调用set()方法即可,使用是一个section就可以。
第二:书写成功下面就是read
同样也是先实例化ConfigParser()这个类,然后调用read(filenames)方法其中参数filenames是.conf的绝对路径(我看别人都只有文件名,我试了一下总是报错,不知道是伪代码还是什么,我还是觉得用绝对路径稳妥一些)。
如果想要读取section(就是我上面说的标签)就是用调用sections()就是把配置文件所有section用列表格式返回,如图:
读取值就使用options(section),因为是配置文件所以key我觉得不会重复这个取出来还要通过列表去找,没必要增加复杂度
大概就这些吧,当然还有删除一些操作,大家可以查看一下ConfigParser()的源码,或者查看别人博客,有些的很多了,我就不写了,打算这几天吧logging这个模块也加进去看看什么效果,回头有啥坑在写吧。
configparser.NoSectionError: No section: '****'
configparser.NoSectionError: No section: '****'解决办法,Apache无法识别相对路径
问题描述
Python使用configparser读取配置文件main.conf,使用python 文件名.py命令启动程序无报错;若将程序部署到Apache服务器上,则报错错:configparser.NoSectionError: No section: ‘****’
原因
Apache无法识别相对路径,需填写绝对路径
解决方案
config.read()读取绝对路径
import configparser
import os, sys
parent_dir = os.path.dirname(os.path.abspath(__file__))
config = configparser.ConfigParser()
config.read(parent_dir + "/main.conf") #读取配置文件采用绝对路径
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。