本文主要记录一些自己遇到的一些实用的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
作用:处理路径相关的操作