python3中配置⽂件ini的使⽤详解----读写、listdictpath等变量---。。。
⽂章⽬录
0.背景知识
背景知识:
python3中,根据不同的⼯具或系统,见到过各种类型的配置⽂件,有json格式的、py格式的、ini格式的,yaml、txt、excel等等。
但是,最常见的还是ini格式的配置⽂件。
1.ini⽂件的格式
# config.ini⽂件
[sys_config]
time =12:30
mylist =[18,"alien",90,"12alien"]
path =../DB/my_excel.xls
[user_info]
name = alien
age =18
pw =123456
每个[]圈起来是区域名,下⾯是对应这个区域的变量,且不同区域可以在通过系统增加、修改等
变量不需要再使⽤“”号圈起来了,这个和py⽂件的变量有点区别
读取完变量之后,所有的变量全部都是字符串str格式的,所以如果变量中如果有list,dict、json等信息,需要使⽤json.loads()⽅法把外⾯
的“”的去掉,就变成数据的原始格式了。
如果path变量,ini⽂件不需要使⽤“”,读取完之后变量就携带“”了,就直接可以⽤了。注意此时的ini⽂件的path是此⽂件相对变量⽂件的相对地址。或者直接把绝对地址写进去也⾏。
2.ini⽂件读取⽅式
(1).读取ini⽂件所有的区块名列表、某个区块名下⾯所有的key
def read_sys_config_path():
current_path = os.path.dirname(os.path.abspath(__file__))
config_file = os.path.join(current_path,'../Config/sys_config.ini')
conf_info = configparser.ConfigParser()
ad(config_file, encoding="utf-8")
return conf_info
def get_all_keys_by_sections_from_sys_config():
sys_path = read_sys_config_path()
section_list = sys_path.sections()
print("所有区块名的列表=====>", section_list)
key_list = sys_path.options("judge_type")
print("某个区块名下⾯key的列表=====>", key_list)
所有区块名的列表=====>['REDIS','judge_type','quantity']
某个区块名下⾯key的列表=====>['error_order','common_quantity_split','common_amount_split','common_dont_split']
(2).根据某个区块名以及对应的key,获取对应的value
因ini⽂件,默认保存的所有数据都是string类型,最终获取到的数据如果是列表、数字等,最终使⽤的时候是需要转换⼀下的。# read_config.py⽂件
import configparser, json
import xlrd
config = configparser.ConfigParser()
# 读取变量信息
mylist = ("sys_config","mylist")
print(mylist,type(mylist),repr(mylist))
# 解析原始变量信息(去掉"")
new_list = json.loads(mylist)
print(new_list,type(new_list),repr(new_list))
# path信息,直接就可以使⽤了
path = ("sys_config","path")
print(path,type(path),repr(path))
[18,"alien",90,"12alien"]<class'str'>'[18, "alien", 90, "12alien"]'
[18,'alien',90,'12alien']<class'list'>[18,'alien',90,'12alien']
../DB/my_excel.xls <class'str'>'../DB/my_excel.xls'
3.通过ini⽂件的变量的path,读取excel⽂件
# read_config.py⽂件
import configparser
import xlrd
config = configparser.ConfigParser()
python怎么读取xls文件
path = ("sys_config","path")
print(path,type(path),repr(path))
workbook = xlrd.open_workbook(path)
# 根据sheet索引或者名称获取sheet内容
sheet1 = workbook.sheet_by_index(0)
# 获取单元格内容
ll(1,0).value)
ll(1,1).value)
ll(1,2).value)
../DB/my_excel.xls <class'str'>'../DB/my_excel.xls' 18.0
alien
china
4.ini⽂件的写⼊
# read_config.py⽂件
import configparser
config = configparser.ConfigParser()
try:
config.add_section("Home")
config.set("Home","IP","10.12.23.56")
config.set("Home","Mask","255.255.255.0")
except configparser.DuplicateSectionError:
print("Section 'Home' already exists")
config.write(open("../Tools/config.ini","w"))
# 写⼊后的config.ini⽂件
[sys_config]
time =12:30
mylist =[18,"alien",90,"12alien"]
path =../DB/my_excel.xls
[user_info]
name = alien
age =18
pw =123456
[Home]
ip =10.12.23.56
mask =255.255.255.0
5.ini⽂件的解码
如果ini⾥⾯的变量,有的值带中⽂字符,需要在打开的时候,使⽤“utf8”解码⽅式打开
config = configparser.ConfigParser()
6.ini⽂件的注释
注释使⽤英⽂的分号;
类似如下情况(显⽰效果不对,不过使⽤英⽂的分号;就对了)
;客户唯⼀识别单号,每个⽤户、每笔母单有对应的⼀个识别号
[Cust_ID]
cust_id =90300076

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。