当前位置: 首页 > news >正文

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()

相关文章:

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( fi…...

【艾思科蓝】JavaScript在数据可视化领域的探索与实践

【ACM出版 | EI快检索 | 高录用】2024年智能医疗与可穿戴智能设备国际学术会议&#xff08;SHWID 2024&#xff09;_艾思科蓝_学术一站式服务平台 更多学术会议请看 学术会议-学术交流征稿-学术会议在线-艾思科蓝 目录 引言 JavaScript可视化库概览 D3.js基础入门 1. 引入…...

【标准库的典型内容】std::declval

一、 d e c l v a l declval declval的基本概念和常规范例 s t d : : d e c l v a l std::declval std::declval 是 C 11 C11 C11标准中出现的一个函数模板。这个函数模板设计的比较奇怪&#xff08;没有实现&#xff0c;只有声明&#xff09;&#xff0c;因此无法被调用&…...

深入了解package.json文件

在前端项目开发中&#xff0c;我们经常会遇到package.json文件。这个文件不仅是一个简单的配置文件&#xff0c;它还承担了项目管理的重任。下面&#xff0c;我们将深入探讨package.json文件的各个字段和作用&#xff0c;并通过实例来帮助你更好地理解和使用它。 package.json…...

【基础知识】网络套接字编程

套接字 IP地址 port&#xff08;端口号&#xff09; socket&#xff08;套接字&#xff09; socket常见API //创建套接字 int socket(int domain, int type, int protocol); //绑定端口 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen); //监听套接字…...

小程序地图展示poi帖子点击可跳转

小程序地图展示poi帖子点击可跳转 是类似于小红书地图功能的需求 缺点 一个帖子只能有一个点击事件&#xff0c;不适合太复杂的功能&#xff0c;因为一个markers只有一个回调回调中只有markerId可以使用。 需求介绍 页面有地图入口&#xff0c;点开可打开地图界面地图上展…...

传统到AI 大数据分析的演变,颠覆智慧水电的未来?

传统到AI 大数据分析的演变&#xff0c;颠覆智慧水电的未来&#xff1f; 前言传统到AI 大数据分析的演变 前言 水电作为一种重要的能源形式&#xff0c;一直在我们的生活中扮演着至关重要的角色。而如今&#xff0c;随着科技的飞速发展&#xff0c;智慧水电和 AI 大数据应用的…...

while语句

1.while使用 打印1-10 #include<stdio.h> int main() {int a 1;while (10 > a){printf("%d\n", a);a 1;}return 0; } 2.while语句中的break&#xff0c;continue break&#xff1a; 跳出while语句 #include<stdio.h> int main() {int a 0;wh…...

机器学习(西瓜书)第 10 章 降维与度量学习

10.1 k近邻学习kNN k 近邻(k-Nearest Neighbor,简称kNN)学习是一种常用的监督学习方法,其工作机制非常简单&#xff1a;给定测试样本&#xff0c;基于某种距离度量找出训练集中与其最靠近的k个训练样本&#xff0c;然后基于这k个 “邻居”的信息来进行预测.通常&#xff0c;在…...

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建Halo博客平台

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建Halo博客平台 Halo博客平台是一款基于Java的开源博客系统&#xff0c;以其简单易用、功能强大、美观大方等特点而受到广泛欢迎&#xff0c;采用了多种先进的技术框架&#xff0c;包括Freemarker模板引擎、Vue.j…...

Android carrier_list.textpb 和apns-conf.xml 配置文件参考

简介 针对SIM 的APN配置是在apns-conf.xml,而Google源码中有apns-full-conf.xml案例参考,是加入了carrier_id的统一配置,就不用单独的一张张卡配了。 apns-conf.xml和apns-full-conf.xml有什么区别? 在于它们包含的配置内容和复杂性,full包含了carrier_id字段。 详细代…...

二期 1.4 Nacos安装部署 - Window版

本文目录 Nacos支持三种部署模式环境准备下载Nacos启动登录服务注册与查看Nacos支持三种部署模式 单机模式 - 用于测试和单机试用。集群模式 - 用于生产环境,确保高可用。多集群模式 - 用于多数据中心场景。以 Window单机模式 抛转引玉,其它部署方式参考官方文档: https://n…...

vue3基础九问,你会几问

1. Vue是什么&#xff1f; Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架。它的核心库只关注视图层&#xff0c;采用自下而上的增量开发设计&#xff0c;这使得你可以将 Vue 轻松地整合到现有的项目中&#xff0c;或者与其他前端库一起使用。Vue 的目标是通过提供反…...

Linux系统应用之知识补充——OpenEuler(欧拉)的安装和基础配置

前言 这篇文章将会对OpenEuler的安装进行详解&#xff0c;一步一步跟着走下去就可以成功 注意 &#xff1a;以下的指令操作最好在root权限下进行&#xff08;即su - root&#xff09; ☀️工贵其久&#xff0c;业贵其专&#xff01; 1、OpenEuler的安装 这里我不过多介绍&a…...

Git(4):修改git提交日志

修改最新一次提交的信息 git commit --amend 修正提交信息 在打开的编辑器中修改信息&#xff0c;保存并退出&#xff0c;Git 会用新的提交信息替换掉旧的提交信息&#xff08;commit-id 变化&#xff09;。也可以使用 git commit --amend -m "" 直接修改日志&#…...

【深度学习】(1)--神经网络

文章目录 深度学习神经网络1. 感知器2. 多层感知器偏置 3. 神经网络的构造4. 模型训练损失函数 总结 深度学习 深度学习(DL, Deep Learning)是机器学习(ML, Machine Learning)领域中一个新的研究方向。 从上方的内容包含结果&#xff0c;我们可以知道&#xff0c;在学习深度学…...

测试文件和数据库文件

接口测试 flaks项目入口文件manage.py路由配置 import requests#首先面向对象作封装&#xff0c;避免相同代码反复编写 class HttpApiTest:def test_get(self,url,data{}): #用来测试get方法的接口 #self通过共享self类中间的变量 #url用来请求接口 #data可传可不传res reques…...

redis集群模式连接

目录 一&#xff1a;背景 二&#xff1a;实现过程 三&#xff1a;总结 一&#xff1a;背景 redis集群通过将数据分散存储在多个主节点上&#xff0c;每个主节点可以有多个从节点进行数据的复制&#xff0c;以此来实现数据的高可用性和负载均衡。在集群模式下&#xff0c;客户…...

Linux高级I/O:多路转接模型

目录 一.常见的IO模型介绍二.多路转接I/O1.select1.1.函数解析1.2. select特点和缺点1.3.基于 select 的多客户端网络服务器 2.poll2.1.poll函数解析2.2.poll特点和缺点2.3.基于poll的tcp服务器 3.epoll3.1.系列函数解析3.2.epoll原理解析2.3.基于 select 的多客户端网络服务器…...

MongoDB Limit 与 Skip 方法

MongoDB Limit 与 Skip 方法 MongoDB 是一个流行的 NoSQL 数据库&#xff0c;它提供了灵活的数据存储和强大的查询功能。在处理大量数据时&#xff0c;我们常常需要限制返回的结果数量或者跳过一部分结果&#xff0c;这时就可以使用 MongoDB 的 limit 和 skip 方法。 Limit 方…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明&#xff1a;假设每台服务器已…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

反向工程与模型迁移:打造未来商品详情API的可持续创新体系

在电商行业蓬勃发展的当下&#xff0c;商品详情API作为连接电商平台与开发者、商家及用户的关键纽带&#xff0c;其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息&#xff08;如名称、价格、库存等&#xff09;的获取与展示&#xff0c;已难以满足市场对个性化、智能…...

智慧工地云平台源码,基于微服务架构+Java+Spring Cloud +UniApp +MySql

智慧工地管理云平台系统&#xff0c;智慧工地全套源码&#xff0c;java版智慧工地源码&#xff0c;支持PC端、大屏端、移动端。 智慧工地聚焦建筑行业的市场需求&#xff0c;提供“平台网络终端”的整体解决方案&#xff0c;提供劳务管理、视频管理、智能监测、绿色施工、安全管…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

全面解析数据库:从基础概念到前沿应用​

在数字化时代&#xff0c;数据已成为企业和社会发展的核心资产&#xff0c;而数据库作为存储、管理和处理数据的关键工具&#xff0c;在各个领域发挥着举足轻重的作用。从电商平台的商品信息管理&#xff0c;到社交网络的用户数据存储&#xff0c;再到金融行业的交易记录处理&a…...