python全栈学习记录(十七)logging、json与pickle、time与datatime、random

logging、json与pickle、time与datatime、random

文章目录

  • logging、json与pickle、time与datatime、random
  • 一、logging
  • 二.json与pickle
  • 三.time与datatime
  • 四.random

一、logging

logging模块用来记录日志信息。

import logging
# 进行基本的日志配置
logging.basicConfig(
filename='access.log',
#format表示日志写入的格式
format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
#datefmt表示日志时间格式设置
datefmt='%Y-%m-%d %H:%M:%S %p',
#level表示阈值
level=10
)# 日志级别遵循原则:自下而上进行匹配,不小于设定阈值的日志会被记录(默认30)
#debug-》info-》warning-》error-》critical
logging.debug('调试信息') #10
logging.info('正常信息') #20
logging.warning('不好啦着火啦') #30
logging.error('报错信息') #40
logging.critical('严重错误信息') #50

format的具体参数可以参考下面的图片:
在这里插入图片描述
使用logging模块时,一般参照如下的格式:

import logging.config
# 定义三种日志输出格式
standard_format = '%(asctime)s - %(filename)s:%(lineno)d - %(name)s - %(levelname)s - %(message)s'
simple_format = '%(asctime)s - %(levelname)s - %(message)s'path=r'日志文件路径'
data='%Y-%m-%d %H:%M:%S %p'LOGGING_DIC = {'version': 1,'disable_existing_loggers': False,#此处将配置的format参数传入'formatters': {'formatter1': {'format': standard_format,'datefmt':data},'formatter2': {'format': simple_format,'datefmt':data},},#filters负责筛选日志信息,目前用不到'filters': {},'handlers': {#打印到终端的日志'sm': {'level': 'DEBUG','class': 'logging.StreamHandler',  # 打印到屏幕'formatter': 'formatter2' # 日志输出格式,与上方传入formatters的相对应},#保存到文件的日志,收集info及以上的日志'h1': {'level': 20,# 阈值,也可以写数字'class': 'logging.FileHandler',  # 保存到文件'formatter': 'formatter1','filename': path,  # 日志文件'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了},},'loggers': {#logging.getLogger找不到匹配的日志标题时,会使用''中的日志格式设置'': {'handlers': ['h1','sm'],# 此处表示日志使用到的输出方式,与上方的handlers相对应'level': 'DEBUG', # 阈值,两处阈值设置不一时,以阈值小的为准'propagate': False,  # 向上(更高level的logger)传递},#日志设置的标题要与logging.getLogger传入的相匹配'日志标题':{'handlers': ['h1'],'level': 30,'propagate': False,},},
}
#将配置字典加载到logging中
logging.config.dictConfig(LOGGING_DIC)
log=logging.getLogger('日志标题')
#下面为具体的日志信息
logging.debug('调试信息')
logging.info('正常信息')
logging.warning('不好啦着火啦')
logging.error('报错信息')
logging.critical('严重错误信息')

二.json与pickle

json、pickle模块的作用是将数据序列化。
json保存的数据可以与多种语言交互,但是它只支持python部分的类型,如字典、列表、元组、字符串、数字、True、False、None等。
pickle只能用于python语言,但是它支持python的所有数据类型。

import json
#将python数据a转为json格式
b=json.dumps(a)
#将json格式的数据b转为python数据
a=json.loads(b)#将python数据a转为json并写入文件,f表示文件句柄
json.dump(a,f)
#从文件中读取json数据并转为python数据b
b=json.load(f)

注:一个文件一般只存一个json数据

import pickle
#将python数据a转为pickle格式
b=pickle.dumps(a)
#将pickle格式的数据b转为python数据
a=pickle.loads(b)#将python数据a转为pickle并写入文件,f表示文件句柄
pickle.dump(a,f)
#从文件中读取pickle数据并转为python数据b
b=pickle.load(f)

三.time与datatime

import time
#获取时间戳
time.time()
<<<1726914530.610406#获取结构化时间
time.localtime()
<<<time.struct_time(tm_year=2024, tm_mon=9, tm_mday=21, tm_hour=18, tm_min=27, tm_sec=21, tm_wday=5, tm_yday=265, tm_isdst=0)
#可以通过上面结构化时间的key取出具体的值
time.localtime().tm_wday
<<<5#获取格式化时间
time.strftime('%Y-%m-%d %H:%M:%S')
<<<2024-09-21 18:30:07#时间戳、结构化时间、格式化时间的转换
#时间戳转结构化时间转格式化时间
time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))
#格式化时间转结构化时间转时间戳
time.mktime(time.strptime('2024-09-21 18:30:07','%Y-%m-%d %H:%M:%S'))#程序休眠3s
time.sleep(3)#计时器,从第一次调用开始计时,再次调用会记录下调用时经过的时间
time.perf_counter()#与time.localtime用法相同,不过为世界标准时区下的时间
time.gmtime()#将时间戳转为星期 月 日 时:分:秒 年的格式
time.ctime()
<<<Sat Sep 21 18:46:12 2024#将结构化时间转为星期 月 日 时:分:秒 年的格式
time.asctime()
import datetime
#获取当前时间(精确为微秒)
datetime.datetime.now()
#获取当前时间(精确为秒)
datetime.datetime.now().replace(microsecond=0)
#修改获取时间的年份
datetime.datetime.now().replace(year=2020)
#计算7天后的时间
(datetime.datetime.now()+datetime.timedelta(days=7)).replace(microsecond=0)
#时间戳转化为格式化时间
import time
datetime.datetime.fromtimestamp(time.time()).replace(microsecond=0)

四.random

random模块通常用来取随机数

import random
#生成一个0~1的随机小数,概率服从高斯分布
random.random()
#生成一个1~10的随机整数,概率服从均匀分布
random.randint(1,10)
#生成一个1~10的随机小数,概率服从均匀分布
random.uniform(1,10)
#获取列表中随机一个值,服从均匀分布
random.choice(['1',2,3])
#获取列表中随机两个值,选的元素不会重复
random.sample(['1',2,3],2)
#获取列表中随机两个值,选的元素可以重复
random.choices(['1',2,3],k=2)
#打乱可变类型的顺序
random.shuffle()
#随机数种子
random.seed()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/148223.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

图文深入理解SQL语句的执行过程

List item 本文将深入介绍SQL语句的执行过程。 一.在RDBMS&#xff08;关系型DB&#xff09;中&#xff0c;看似很简单的一条已写入DB内存的SQL语句执行过程却非常复杂&#xff0c;也就是说&#xff0c;你执行了一条诸如select count(*) where id 001 from table_name的非常简…

[WMCTF2020]Make PHP Great Again 2.01

又是php代码审计,开始吧. 这不用审吧&#xff0c;啊喂. 意思就是我们要利用require_once()函数和传入的file的value去读取flag的内容.&#xff0c;貌似呢require_once()已经被用过一次了&#xff0c;直接读取还不行&#xff0c;看一下下面的知识点. require_once() require…

WebLogic 漏洞复现

1、后台弱⼝令GetShell 默认账号密码&#xff1a;weblogic/Oracle123 weblogic常⽤弱⼝令&#xff1a;https://cirt.net/passwords?criteriaweblogic 这⾥注意&#xff0c; 单个账号错误密码5次之后就会⾃动锁定。 http://47.121.212.195:7001/console 2、登录后台后&#…

恒生科指八连涨,汽车股强势

9月20日电 周五&#xff0c;港股三大股指集体收涨。恒生指数涨1.36%报18258.57点&#xff0c;连续第六个交易日上涨&#xff1b;恒生科技指数涨1.43%报3703.84点&#xff0c;连续第八个交易日上涨&#xff0c;创逾两个月来新高&#xff1b;恒生中国企业指数涨1.21%报6381.5点&a…

项目扩展五:交互式:command-line interface版本的实现

项目扩展五&#xff1a;command-line interface版本的实现 一、CLI交互的设计1.为何要设计这个CLI交互2.具体设计1.启动服务2.选择信道3.选择虚拟机4.正式业务注意&#xff1a;1.消费者与生产者跟信道的关系2.消息处理回调函数的问题3.消息确认的问题 5.其他功能1.打印功能2.查…

STM32精确控制步进电机

目的&#xff1a;学习使用STM32电机驱动器步进电机&#xff0c;进行电机运动精确控制。 测试环境&#xff1a; MCU主控芯片STM32F103RCT6 &#xff1b;A4988步进电机驱动器模块&#xff1b;微型2相4线步进电机10mm丝杆滑台&#xff0c;金属丝杆安装有滑块。 10mm二相四线微型…

机器学习之非监督学习(二)异常检测(基于高斯概率密度)

机器学习之非监督学习&#xff08;二&#xff09;异常检测&#xff08;基于高斯概率密度&#xff09; 0. 文章传送1.案例引入2.高斯正态分布3.异常检测算法4.异常检测 vs 监督学习5.算法优化6.代码实现 0. 文章传送 机器学习之监督学习&#xff08;一&#xff09;线性回归、多…

C语言中数组和字符串的联系

一、C语言中&#xff0c;数组和字符串 1、C语言中&#xff0c;定义一个数组后&#xff0c;数组名保存的是这个数组的首地址。类似一个指向数组第一个元素的指针&#xff0c;但是这个指针不能重新指向。2、字符串在C语言中是通过字符数组来实现的&#xff0c;也就是说字符串还是…

【小沐学CAD】3ds Max常见操作汇总

文章目录 1、简介2、二次开发2.1 C 和 3ds Max C SDK2.2 NET 和 3ds Max .NET API2.3 3ds Max 中的 Python 脚本2.4 3ds Max 中的 MAXScript 脚本 3、快捷键3.1 3Dmax键快捷键命令——按字母排序3.2 3dmax快捷键命令——数字键3.3 3dmax功能键快捷键命令3.4 3Dmax常用快捷键——…

Elasticsearch 完整格式的 URL 进行分词,有什么好的解决方案吗?

1、问题描述 我想对完整格式的 url 进行分词&#xff0c;请问有什么好的解决方案吗&#xff1f; 比如&#xff1a;https://www.abc.com/any/path?param_1some&param-2other#title 看了官方的分词器&#xff0c;感觉没啥合适的? 预处理的话&#xff0c;又不知道该怎么处理…

Unity对象池的高级写法 (Plus优化版)

唐老师关于对物体分类的OOD的写法确实十分好&#xff0c;代码也耦合度也低&#xff0c;但是我有个简单的写法同样能实现一样的效果&#xff0c;所以我就充分发挥了一下主观能动性 相较于基本功能&#xff0c;这一版做出了如下改动 1.限制了对象池最大数量&#xff0c;多出来的…

C++11 可变的模板参数

前言 本期我们接着继续介绍C11的新特性&#xff0c;本期我们介绍的这个新特性是很多人都感觉抽象的语法&#xff01;它就是可变的模板参数&#xff01; 目录 前言 一、可变的模板参数 1.1可变的参数列表 1.2可变的参数包 1.3可变参数包的解析 • 递归展开解析 • 逗号…

微服务Docker相关指令

1、拉取容器到镜像仓库 docker pull xxx //拉取指令到 镜像仓库 例如 docker pull mysql 、docker pull nginx docker images //查看镜像仓库 2、删除资源 2.1、删除镜像仓库中的资源 docker rmi mysql:latest //删除方式一&#xff1a;格式 docker rmi 要…

【解密 Kotlin 扩展函数】扩展函数的创建(十六)

导读大纲 1.1 为第三方的类添加方法: 扩展函数 1.1 为第三方的类添加方法: 扩展函数 Kotlin 的主题之一是与现有代码的平滑集成 即使是纯 Kotlin 项目,也是构建在 Java 库之上的 如 JDK、Android 框架和其他第三方框架 而当你将 Kotlin 集成到 Java 项目中时 你还要处理尚未或不…

python爬虫:将知乎专栏文章转为pdf

欢迎关注本人的知乎主页~ 实现思路 用户输入专栏ID&#xff1a; 代码首先提示用户输入一个知乎专栏的ID&#xff0c;默认值为 c_1747690982282477569。输入的ID用于构建API请求的URL。 发送HTTP请求&#xff1a; 使用 requests.get() 向知乎API发送GET请求&#xff0c;获取指定…

【QGIS入门实战精品教程】6.1:QGIS根据属性条件查询数据(SQL表达式)

文章目录 一、字段过滤二、高级过滤(表达式)一、字段过滤 对于单个字段的查询,可以采用字段过滤,例如,从县区数据中,根据NAME字段,查找出县级市玉门市。操作为:右键县区→打开属性表: 点击左下角,选择name字段。 输入玉门市,回车,选择查找除的属性表记录,此时图斑…

【Linux】入门【更详细,带实操】

Linux全套讲解系列&#xff0c;参考视频-B站韩顺平&#xff0c;本文的讲解更为详细 目录 1、课程内容 2、应用领域 3、概述 4、 Linux和Unix 5、VMware15.5和CentOS7.6安装 6、网络连接三种方式 7、虚拟机克隆 8、虚拟机快照 9、虚拟机迁移删除 10、vmtools 11、目录…

set-ExecutionPolicy RemoteSigned 提示不是内部或外部命令,也不是可运行的程序或批处理文件

这个错误一般发生在使用命令提示符或者PowerShell窗口中找不到set-ExecutionPolicy RemoteSigned。如果你想在命令提示符或者PowerShell窗口运行set-ExecutionPolicy RemoteSigned&#xff0c;你需要搜索打开Window PowerShell ISE&#xff0c;并以管理员身份打开&#xff0c;输…

基于微信小程序的美食外卖管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码 精品专栏&#xff1a;Java精选实战项目…

Tomcat系列漏洞复现

CVE-2017-12615——Tomcat put⽅法任意⽂件写⼊漏洞 漏洞描述 当 Tomcat运⾏在Windows操作系统时&#xff0c;且启⽤了HTTP PUT请求⽅法&#xff08;例如&#xff0c;将 readonly初始化参数由默认值设置为false&#xff09;&#xff0c;攻击者将有可能可通过精⼼构造的攻击请求…