Python实用库记录

本文主要记录一些自己遇到的一些实用的Python库,今日开文,后面会不断积累

关于Python内置知识的记录可点击 Python内置知识记录

random

作用:生成随机数

  • random.randint(a, b)
    生成 [ a , b ] [a, b] [a,b] 范围内随机的整数
  • random.uniform(a, b)
    随机小数生成,生成 [ a , b ] [a,b] [a,b]范围小数
  • random.random()
    生成一个 [ 0 , 1.0 ) [0,1.0) [0,1.0) 范围内的随机浮点数
  • random.choice(sequence)
    从序列中随机获取一个元素,序列可以为 list, tuple, str
  • random.shuffle(list)
    将一个列表中的元素打乱,对列表的改变是永久性的

tqdm

作用:实时显示迭代、循环的执行的进度条

trange(i) 是对tqdm(range(i)) 特殊优化过的实例,是一种简单的写法。

from tqdm import tqdm, trange
ans = 0
for i in tqdm(range(1000)):for j in range(20000):ans += 1
for i in trange(1000):for j in range(20000):ans += 1

1 基于迭代对象

from tqdm import tqdm, trange
import time
lst = ['a', 'b', 'c', 'd', 'e']
tqdm_lst = tqdm(lst)
for element in tqdm_lst:# 前面添加描述tqdm_lst.set_description('Processing ' + element)time.sleep(0.2)

2 手动更新

就是自己可以设置进度数

# total表示总的进度数
with tqdm(total=100) as pbar:pbar.set_description("Processing ")for i in range(10):time.sleep(0.1)# 每次增加10个进度数pbar.update(10)
'''0%|          | 0/100 [00:00<?, ?it/s]
Processing :   0%|          | 0/100 [00:00<?, ?it/s]
Processing :  10%|█         | 10/100 [00:00<00:00, 98.22it/s]
Processing :  20%|██        | 20/100 [00:00<00:00, 98.66it/s]
Processing :  30%|███       | 30/100 [00:00<00:00, 98.88it/s]
Processing :  40%|████      | 40/100 [00:00<00:00, 99.09it/s]
Processing :  50%|█████     | 50/100 [00:00<00:00, 99.31it/s]
Processing :  60%|██████    | 60/100 [00:00<00:00, 99.35it/s]
Processing :  70%|███████   | 70/100 [00:00<00:00, 99.28it/s]
Processing :  80%|████████  | 80/100 [00:00<00:00, 99.27it/s]
Processing :  90%|█████████ | 90/100 [00:00<00:00, 99.27it/s]
Processing : 100%|██████████| 100/100 [00:01<00:00, 99.17it/s]
Processing : 100%|██████████| 100/100 [00:01<00:00, 99.15it/s]
'''
# tqdm的参数解析
class tqdm(object):def __init__(self, iterable=None, desc=None, total=None, leave=False,file=sys.stderr, ncols=None, mininterval=0.1,maxinterval=10.0, miniters=None, ascii=None,disable=False, unit='it', unit_scale=False,dynamic_ncols=False, smoothing=0.3, nested=False,bar_format=None, initial=0, gui=False):

iterable :可迭代对象,手动更新时不需要设置
desc: 字符串,左边进度条的描述文字
total:总的项目数
leave:结束后是否保留进度条

# total表示总的进度数
with tqdm(total=100, desc="Processing", leave=True) as bar:for i in range(10):time.sleep(0.1)# 每次增加10个进度数bar.update(10)

argparse

作用:命令行参数解析,使用python命令行执行py文件时,可以在命令行传入指定参数,此库就可以进行解析

from argparse import ArgumentParser
parse = ArgumentParser() # 初始化器
# 此形式的命令: python name.py --json_path path
parse.add_argument("--json_path", "-p", dest="json_path", default=None) # 命令行传入的参数
parse.add_argument("--save_path", dest="save_path", default=None) # 可以传入多个参数
args = parse.parse_args()
# 使用相关参数
json_path = args.json_path
save_path = args.save_path

add_argument参数解析:

  • name or flags - 选项字符串的名字或者列表,例如 foo 或者 -f, --foo,我们一般写两个,一个长参数,一个短参数
  • type - 命令行参数应该被转换成的类型
  • default - 不指定参数时的默认值
  • help - 参数的帮助信息
  • action - 命令行遇到参数时的动作
    • store_True,表示赋值为const,如果命令行指定了参数,默认值为True,否则为False
    • append,将遇到的值存储成列表,也就是如果参数重复则会保存多个值
    • append_const,将参数规范中定义的一个值保存到一个列表
    • count,存储遇到的次数

loguru

作用:在程序中打印相关日志信息,有助于调试代码
loguru提供了七层日志层级,或者说七种日志类型。

from loguru import logger
logger.trace("A trace message.")
logger.debug("A debug message.")
logger.info("An info message.")
logger.success("A success message.")
logger.warning("A warning message.")
logger.error("An error message.")
logger.critical("A critical message.")
'''
2022-08-10 11:58:33.224 | DEBUG | __main__:<module>:12 - A debug message.
2022-08-10 11:58:33.224 | INFO | __main__:<module>:13 - An info message.
2022-08-10 11:58:33.225 | SUCCESS | __main__:<module>:14 - A success message.
2022-08-10 11:58:33.226 | WARNING | __main__:<module>:15 - A warning message.
2022-08-10 11:58:33.226 | ERROR | __main__:<module>:16 - An error message.
2022-08-10 11:58:33.227 | CRITICAL | __main__:<module>:17 - A critical message.
'''

TRACE (5): 用于记录程序执行路径的细节信息,以进行诊断。
DEBUG (10): 开发人员使用该工具记录调试信息。
INFO (20): 用于记录描述程序正常操作的信息消息。
SUCCESS (25): 类似于INFO,用于指示操作成功的情况。
WARNING (30): 警告类型,用于指示可能需要进一步调查的不寻常事件。
ERROR (40): 错误类型,用于记录影响特定操作的错误条件。
CRITICAL (50): 严重类型,用于记录阻止核心功能正常工作的错误条件。

from loguru import loggerfor id in range(5):logger.info(f"id: {id}")
''' 结果
2024-02-01 09:54:01.537 | INFO     | __main__:<module>:4 - id: 0
2024-02-01 09:54:01.537 | INFO     | __main__:<module>:4 - id: 1
2024-02-01 09:54:01.537 | INFO     | __main__:<module>:4 - id: 2
2024-02-01 09:54:01.538 | INFO     | __main__:<module>:4 - id: 3
2024-02-01 09:54:01.538 | INFO     | __main__:<module>:4 - id: 4
'''

typing

作用:用于元素类型的注解

pathlib

作用:处理路径相关的操作

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kubernetes k8s

Kubernetes k8s 一个开源的容器编排引擎&#xff0c;用来对容器化应用进行自动化部署、 扩缩和管理。 从架构设计层面&#xff0c;k8s能很好的解决可用性&#xff0c;伸缩性&#xff1b;从部署运维层面&#xff0c;服务部署&#xff0c;服务监控&#xff0c;应用扩容和故障处…

springboot并mybatis入门启动

pom.xml,需要留意jdk的版本&#xff08;11&#xff09;和springboot版本要匹配&#xff08;2.7.4&#xff09;&#xff0c;然后还要注意mybatis启动l类的版本&#xff08;2.2.2&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xm…

MAX31865读取PT100/PT1000电阻值

1、芯片介绍 MAX31865是简单易用的热敏电阻至数字输出转换器,优化用于铂电阻温度检测器(RTD)。外部电阻设置RTD灵敏度,高精度Δ- Σ ADC将RTD电阻与基准电阻之比转换为数字输出。MAX31865输入具有高达45V的过压保护,提供可配置的RTD及电缆开路、短路条件检测。 2、芯片特点…

Java单点登录(SSO)实现指南:深度解析与全面实践

目录 引言 一、什么是单点登录&#xff08;SSO&#xff09;&#xff1f; 二、SSO的工作原理 三、SSO的具体实现 SSO的核心概念 1. 令牌&#xff08;Token&#xff09;机制 2. 身份验证协议 SSO实现步骤 1. 选择身份验证协议 2. 创建认证服务器 3. 创建资源服务器 4.…

解决Docker打包Eureka注册中心,其他服务无法注册问题

​前言 本文主要是介绍利用docker打包Eureka注册中心&#xff0c;并且发布镜像到服务器&#xff0c;遇到的一个比较坑的问题。主要是服务镜像部署完毕之后&#xff0c;docker容器都能启动&#xff0c;并且也能访问&#xff0c;但是其他服务就是无法注册到注册中心。排除问题&a…

可重入锁设计

go 实现可重入锁 实际上&#xff0c;Go 语言标准库中的 sync.Mutex 是不可重入的。但是&#xff0c;我们可以基于 sync.Mutex 实现一个可重入锁&#xff08;ReentrantLock&#xff09;。下面是一个简单的可重入锁的实现示例&#xff1a; Go 1package main 2 3import ( 4 "…

查看阿里云maven仓中某个库有哪些版本

起因 最近项目上有做视频业务&#xff0c;方案是使用阿里云的短视频服务&#xff0c;其中也有使用到阿里云的上传SDK&#xff0c;过程中有遇一个上传SDK的内部崩溃&#xff0c;崩溃栈如下&#xff1a; Back traces starts. java.lang.NullPointerException: Attempt to invok…

只用一台服务器部署上线(宝塔面板) 前后端+数据库

所需材料 工具&#xff1a;安装宝塔面板服务器至少一台、域名一个 前端&#xff1a;生成dist文件&#xff08;前端运行build命令&#xff09; 后端&#xff1a;生成jar包&#xff08;maven运行package命令&#xff09; 准备&#xff1a; 打开宝塔面板&#xff0c;点击进入软…

2、安全开发-Python-Socket编程端口探针域名爆破反弹Shell编码免杀

用途&#xff1a;个人学习笔记&#xff0c;欢迎指正&#xff01; 目录 主要内容&#xff1a; 一、端口扫描(未开防火墙情况) 1、Python关键代码: 2、完整代码&#xff1a;多线程配合Queue进行全端口扫描 二、子域名扫描 三、客户端&#xff0c;服务端Socket编程通信cmd命…

ASCII 编码一览表

ASCII 编码一览表 标准 ASCII 编码共收录了 128 个字符&#xff0c;其中包含了 33 个控制字符&#xff08;具有某些特殊功能但是无法显示的字符&#xff09;和 95 个可显示字符。 二进制十进制十六进制字符/缩写解释00000000000NUL (NULL)空字符00000001101SOH (Start Of Hea…

Android中 Gradle与 AGP 版本对应关系表

Android Gradle Plugin Version版本Gradle Version版本1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2.132.0.0 - 2.1.22.10 - 2.132.1.3 - 2.2.32.14.12.3.03.33.0.04.13.1.04.43.2.0 - 3.2.14.63.3.0 - 3.3.34.10.13.4.0 - 3.4.35.1.13.5.0 - 3.5.45.4.13.…

Iceberg从入门到精通系列之二十四:Spark Structured Streaming

Iceberg从入门到精通系列之二十四&#xff1a;Spark Structured Streaming 一、Streaming Reads二、Streaming Writes三、Partitioned table四、流表的维护 Iceberg 使用 Apache Spark 的 DataSourceV2 API 来实现数据源和目录。 Spark DSv2 是一个不断发展的 API&#xff0c;在…

Nginx简单阐述及安装配置

目录 一.什么是Nginx 二.Nginx优缺点 1.优点 2.缺点 三.正向代理与反向代理 1.正向代理 2.反向代理 四.安装配置 1.添加Nginx官方yum源 2.使用yum安装Nginx 3.配置防火墙 4.启动后效果 一.什么是Nginx Nginx&#xff08;“engine x”&#xff09;是一个高性能的HTTP…

Linux Zip解压缩命令

Zip 用法 $ zip [-选项] [-b 路径] [-t 日期] [-n 后缀名] [压缩文件列表] [-xi 列表] 默认操作是添加或替换压缩文件列表中的压缩文件条目&#xff0c;压缩文件列表可以包括特殊名称 -&#xff0c;压缩标准输入数据 Zip 是一个创建和管理 zip 文件的压缩工具 Unzip 是一个用…

算法day10

算法day10 20 有效的括号1047 删除字符串中的所有相邻重复性150 逆波兰表达式求值 20 有效的括号 拿到这个题的想法&#xff0c;首先我在想我能不能用数组的操作来扫描做。后来想想&#xff0c;如果这样做那特判也太多了&#xff0c;不好做。然后第二个想法就是用栈来做&…

冒泡排序(Bubble Sort)、快速排序(Quick Sort)和归并排序(Merge Sort)

冒泡排序 冒泡排序是一种简单的排序算法&#xff0c;它重复地遍历要排序的列表&#xff0c;依次比较相邻两个元素&#xff0c;如果它们的顺序错误就交换它们。重复多次&#xff0c;直到没有任何一对数字需要交换为止&#xff0c;最终得到有序列表。 冒泡排序的时间复杂度为 O(…

机器学习-基础分类算法-KNN详解

KNN-k近邻算法 k-Nearest Neighbors 思想极度简单应用数学只是少效果好可以解释机器学习算法使用过程中的很多细节问题更完整的刻画机器学习应用的流程 创建简单测试用例 import numpy as np import matplotlib.pyplot as plt raw_data_X [[3.393533211, 2.331273381],[3.1…

ubuntu20.04安装sumo

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 有问题&#xff0c;请大家指出&#xff0c;争取使方法更完善。这只是ubuntu安装sumo的一种方法。一、注意事项1、首先明确你的ubuntu的用户名是什么 二、sumo安装1.…

1.3.。

1、无名管道&#xff1a;是一个特殊的文件&#xff0c;存储于内存中&#xff0c;不在文件系统中展示&#xff0c;适合亲缘进程间的通信&#xff1b; 2、有名管道&#xff1a;与无名管道类似&#xff0c;但该特殊文件能在文件系统中查看&#xff0c;并且时候亲缘和非亲缘进程间的…

基于springboot篮球论坛系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…