Python 之 Logging 日志记录模块 & Configparser 对配置 ini 操作模块

Chap.I Logging

Python之日志处理(logging模块)https://www.cnblogs.com/yyds/p/6901864.html
Logging 的升级版 loguru,支持彩色输出,支持输出到多个文件,分级别分别输出,过大创建新文件,过久自动删除等等。
https://blog.csdn.net/cui_yonghua/article/details/107498535

Sec.I 日志等级

日志等级(level)描述
DEBUG最详细的日志信息,典型应用场景是 问题诊断
INFO信息详细程度仅次于DEBUG,通常只记录关键节点信息,用于确认一切都是按照我们预期的那样进行工作
WARNING当某些不期望的事情发生时记录的信息(如,磁盘可用空间较低),但是此时应用程序还是正常运行的
ERROR由于一个更严重的问题导致某些功能不能正常运行时记录的信息
CRITICAL当发生严重错误,导致应用程序不能继续运行时记录的信息

等级顺序:DEBUG < INFO < WARNING < ERROR < CRITICAL
DEBUG 最详细,CRITICAL 最简略。可通过basicConfig()函数中的level参数来控制输出日志的等级。

Sec.II 实操笔记

import logging
# 对 log 的基本配置,设置输出文件、输出日志等级、输出格式等
logging.basicConfig(filename='my.log',level=logging.INFO, 
format='%(asctime)s [%(levelname).1s] <%(filename)-s :%(lineno)-s> : %(message)s',
filemode="w",
)

import logging

logging.debug("This is a debug log.")
logging.info("This is a info log.")
logging.warning("This is a warning log.")
logging.error("This is a error log.")
logging.critical("This is a critical log.")
#------------------ out ---------------------------
2022-06-13 11:43:37,465 [I] <main.py :14> : This is a info log.
2022-06-13 11:43:37,465 [W] <main.py :15> : This is a warning log.
2022-06-13 11:43:37,465 [E] <main.py :16> : This is a error log.
2022-06-13 11:43:37,465 [C] <main.py :17> : This is a critical log.

Chap.II Configparser

参考:https://www.jianshu.com/p/417738fc9960

这个模块是用来读取配置*.ini文件的。

import configparser		# 首先导入模块

它的常用方法有

方法含义
read(fname)读取配置信息到对象中
sections()获取所有节的名称,返回一个字符串列表
items('user')获取节user的配置信息,返回一个元胞列表
options('user')获取节user的所有选项,返回一个字符串列表
get('date','year')获取节date选项year的值,返回一个字符串;get后面也可跟int/boolean/float
has_section('user')检查节user是否存在,返回布尔型数据
has_option('date', 'year')检查节datayear选项是否存在,返回布尔型数据
add_section('user')加入节user,若节已存在会报错
set(section, option, value)将节section选项option的值置为value,若选项不存在,则新建
remove_section(section)删除节section,即使节不存在也不会报错
remove_option(section, option)删除选项option,当节不存在会报错
write(open(filename, 'w'))configparser对象执行过修改之后,可以将其写入文件存留。

Sec.I 配置文件

首先需要了解一下什么是*.ini文件,iniInitialization file的缩写,即为初始化文件,windows很多配置文件都采用这种文件。它的格式也十分简单,下面几行就可以概括:

[sec_xxx]				# 代表节,section
option_xxx=value_xxx	# 代表参数,parameter
;						# 注释符
  • INI所包含的最基本的“元素”就是参数(parameter),每个参数都有一个name和一个value,name和value由等号=隔开,name在等号的左边。
  • 所有的参数都是以节(section)为单位结合在一起的。所有的section名称都是独占一行,并且section名字都被方括号包围着。在section声明后的所有parameters都属于该section。一个section没有明显的结束标识符,一个section的开始就是上一个section的结束,或者是文件结束。
  • 注释标识符为;,在分号后面的文字,直到该行结尾都全部为注释。
[user]
user_name = Mr.X
password = 222

[connect]
ip = 127.0.0.1
port = 4723

[date]
year = 2022
mon = 6
day = 14
yymmdd = ${year}-${mon}-${day}

上面是一个简单的*.ini配置文件,就将它命名为test.ini

Sec.II 实操记录

下面根据上面的配置文件,来练练手。

首先导入模块,读取配置文件

import configparser
config = configparser.ConfigParser()
fname=r'C:\Users\OHanlon\source\mGit\python\mpythonscript\src\test.ini'
config.read(fname, encoding='utf-8')

config是我们所创建的configparser对象,它常用的方法如上表所示,下面尝试一下使用这些方法。

首先是取值

all_sections = config.sections()
print('sections: ', all_sections) 
items = config.items('user')
print(items)
options = config.options('user')
print(options) 
# -------------- out ----------------
sections:  ['user', 'connect', 'date']
[('user_name', 'Mr.X'), ('password', '222')]
['user_name', 'password']

然后是利用取出来的值,对“不完全的值”做更改

year = config.getint('date', 'year')
mon = config.getint('date', 'mon')
day = config.getint('date', 'day')
print(type(year))
print(year,mon,day)
ymd = config.get('date', 'yymmdd')
print(ymd)
ymd = ymd.replace('${year}',str(year))
ymd = ymd.replace('${mon}',str(mon).zfill(2))     # 位数不够前补0
ymd = ymd.replace('${day}',str(day).zfill(2))
print(ymd)
# -------------- out ----------------
<class 'int'>
2022 6 14
${year}-${mon}-${day}
2022-06-14

加一些选项,并将配置写入文件

config.set('date', 'new_yymmdd', ymd)
config.set('date', 'gpsweek', '2048')
print(config.get('date', 'new_yymmdd'))
print(config.get('date', 'gpsweek'))
config.write(open(fname, 'w'))
# -------------- out ----------------
2022-06-14
2048

写入文件后,文件变为

[user]
user_name = Mr.X
password = 222

[connect]
ip = 127.0.0.1
port = 4723

[date]
year = 2022
mon = 6
day = 14
yymmdd = ${year}-${mon}-${day}
new_yymmdd = 2022-06-14
gpsweek = 2048
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流浪猪头拯救地球

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值