1、Excel文件处理
安装 openpxl 第三方库
openpxl 模块三大组件:
1、工作簿 (包含多个sheet工作表)
2、工作表 (某个数据包含在某个工作表)
3、单元格
1、创建excel工作簿
import openpyxl
"""
Excel表格的创建
"""
def createExcel():
# 创建工作簿
wk = openpyxl.Workbook()
# 获取当前工作表
sheet = wk.active
# 写数据到单元格
sheet.cell(1, 1).value = "username"
sheet.cell(1, 2).value = "class"
sheet.cell(1, 3).value = "adress"
wk.save("userinfo.xlsx")
if __name__ == '__main__':
createExcel()
run后会生成一个userinfo.xlsx工作簿,内容:
2、读取工作表
"""
2、读取Excel表格的数据
"""
def readExcel():
# 读取工作簿
wk = openpyxl.load_workbook("userinfo.xlsx")
# 方式一:获取工作表
sheet1 = wk.get_sheet_by_name("Sheet")
# 方式二:获取工作表
# sheet1 = wk["Sheet"]
# 获取单元格坐标
locaion = sheet1.cell(1, 1)
value = sheet1.cell(1, 1).value
print(locaion, value)
rows = sheet1.max_row
cols = sheet1.max_column
print(f"工作表行数={rows}, 列数={cols}")
3、编辑工作表
先加载excel表格 然后修改数据后 保存 就ok
2、日志处理
1、日志作用:
问题定位、信息查询、数据分析
2、内置模块:logging
logging的四大组件:
1、日志器Logger -- > 入口
2、处理器 Handler ---> 执行者 在哪个端输出 (日志文件 or 控制台)
3、格式器 Fomatter 旗帜输入的内容
4、过滤器 Filter 输出感兴趣日志信息 过滤掉不感兴趣的日志信息
关系:1个日志器可以有多个处理器
每个处理器可以有各自的各时期和过滤器
3、logging模块的应用
日志级别:
debug 调试信息
info 关键时间描述 比如 在什么时间做了什么事情
warning 警告信息
error 错误信息
critical 严重错误信息
案例1 如下:
import logging
# 创建日志器
logger = logging.getLogger("logger")
# 创建控制台处理器 ---》 日志会输出在控制台
SH = logging.StreamHandler()
# 创建文件处理器 ---》 那么日志会输出到文件里面
FH = logging.FileHandler("log.txt")
# 日志包含哪些内容 时间 文件 日志级别 日志信息
formatter = logging.Formatter(fmt="[%(asctime)s][%(filename)s] %(levelname)s : %(message)s",
datefmt="%Y/%m/%d %H:%M:%S")
logger.addHandler(SH)
logger.addHandler(FH)
SH.setFormatter(formatter)
# 假设有报错
try:
score = int(input("请输入你的成绩"))
if score > 60:
print("恭喜你通过")
else:
print("继续努力")
logging.debug("这是一个debug信息")
logger.info("你查询成绩成功")
logging.warning("这是一个警告信息")
except Exception as error:
logger.error("输入不是数字, 错误信息:"+str(error))
logger.critical("这是一个critical信息")
如果想封装成一个方法的话, 如下
import logging
class FrameLog:
def getLogger(self):
# 创建日志器
logger = logging.getLogger("logger")
logger.setLevel(logging.INFO)
# 如果没有处理器
if not logger.handlers:
# 创建控制台处理器 ---》 日志会输出在控制台
SH = logging.StreamHandler()
# 创建文件处理器 ---》 那么日志会输出到文件里面
FH = logging.FileHandler("log.txt")
# 日志包含哪些内容 时间 文件 日志级别 日志信息
formatter = logging.Formatter(fmt="[%(asctime)s][%(filename)s] %(levelname)s : %(message)s",
datefmt="%Y/%m/%d %H:%M:%S")
logger.addHandler(SH)
logger.addHandler(FH)
SH.setFormatter(formatter)
return logger
def sum_two(self, x, y):
"""
求多个数之和
:param args:
:return:
"""
sum_two = 0
try:
sum_two = x + y
self.getLogger().info(f"计算2个数之和={sum_two}")
return sum_two
except Exception as error:
self.getLogger().error("计算2个数之和有异常:\n"+str(error))
def sum(self, *args):
"""
求多个数之和
:param args:
:return:
"""
try:
sum = 0
for num in args:
sum+=num
except Exception as error:
self.getLogger().error("计算多个数之和有异常:\n"+str(error))
self.getLogger().info(f"计算多个数之和={sum}")
return sum
if __name__ == '__main__':
FrameLog().sum(9,2,3)
FrameLog().sum_two(1,2)