tqdm
tqdm是 Python 进度条库,可以在 Python长循环中添加一个进度提示信息。用户只需要封装任意的迭代器,是一个快速、扩展性强的进度条工具库
- 手动更新
import time
from tqdm import tqdm
with tqdm(total=200) as pbar:
pbar.set_description('Processing:')
# total表示总的项目, 循环的次数20*10(每次更新数目) = 200(total)
for i in range(20):
# 进行动作, 这里是过0.1s
time.sleep(0.1)
# 进行进度更新, 这里设置10个
pbar.update(10)
Processing:: 100%|██████████| 200/200 [00:02<00:00, 91.94it/s]- 自动更新
import time
from tqdm import *
for i in tqdm(range(100)):
time.sleep(0.01)
100%|██████████| 100/100 [00:01<00:00, 64.60it/s]argparse
基本框架
import argparse
def get_parser():
parser = argparse.ArgumentParser(description="Demo of argparse")
parser.add_argument('--name', default='Great',type=str,help='')
parser.add_argument('--output', action='store_true')
parser.add_argument("--pattern","-p", type=str, required=True,default="plane",choices=['plane', 'line'])
args = parser.parse_args()
def print_args(args):
args = args.__dict__
for k, v in args.items():
print("{}: {}".format(k, v))
return args
if __name__ == '__main__':
args = get_parser()
name = args.name
print('Hello {}'.format(name))其他参数
dest
parser.add_argument('-num',dest='n',action='store_const', const=10)
在代码运行的过程中,num会被n进行复写,只能通过args.n来调用num·的数据
nargs
parser.add_argument('--ls', nargs=2, type=int)
此案例中ls需要输入两个值,输多或少都会报错。
| 值 | 含义 |
|---|---|
| N | 参数的绝对个数(例如:3) |
| ‘?’ | 0或1个参数 |
| ’*’ | 0或所有参数 |
| ‘+’ | 所有,并且至少一个参数 |
pprint
可以按照目标格式按行输出内容,易于debug pprint.pprint(content)
pickledb
一般命令
import pickledb
db = pickledb.load('testdb.db',True)
db.set('strtest','a')
print(db.get('strtest')) # 输出结果为 a
db.append('strtest','b')
print(db.get('strtest')) # 输出结果为 ab
db.rem('strtest') #删除
print(db.get('strtest')) #输出False
print(db.getall()) #输出所有key
print(db.exists('3')) #判断key是否存在
db.deldb() #删除所有内容list
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 加载数据库,如果没有会自动创建
list_=db.lcreate('database') # 创建list
data={1:1,2:2,3:3}
db.ladd('database',data) # 将data 添加到list
print db.lgetall('database') # 获取list中的所有内容 [{1: 1, 2: 2, 3: 3}]
db.lextend('database',data) # 用序列扩展列表
print db.lgetall('database') # [{1: 1, 2: 2, 3: 3}, 1, 2, 3]
print db.lget('database',0) # 在列表中返回一个值 {1: 1, 2: 2, 3: 3}
# db.lrem('database') # 删除一个列表及其所有值
db.lpop('database',-1) # 从列表中删除一个值
print db.lgetall('database') # [{1: 1, 2: 2, 3: 3}, 1, 2]
print(db.llen('database')) # 返回列表的长度 3
db.lappend('database',0,data) # 在列表中添加更多值
print db.lgetall('database') # ['{1: 1, 2: 2, 3: 3}{1: 1, 2: 2, 3: 3}', 1, 2]
print db.getall() # ['database']dict
#-*- coding:utf-8 -*-
import pickledb
import pickle
db=pickledb.load('example.db',False) # 加载数据库,如果没有会自动创建
dict_=db.dcreate('database') # 创建dict
db.dadd('database',(1,2)) # 将一个键值对添加到字典中,“pair”是一个元组
db.dadd('database',(2,3))
print db.dgetall('database') # 从字典中返回所有键值对 {1: 2, 2: 3}
print db.dget('database',1) # 2 在字典中返回一个key的值
print db.dkeys('database') # 在字典中返回一个key的值 [1,2]
print db.dvals('database') # 返回一个字典的所有value [2,3]
print db.dexists('database',2) # 确定key是否存在 存在返回1,不存在报错
# db.drem('database') # 删除一个字典和所有的对
db.dpop('database',1) # 删除一个字典中的一个key
print db.dgetall('database') # {2: 3}
print db.getall() # ['database']
db.deldb() # 从数据库中删除所有内容
db.dump() # 将数据库从内存保存到文件pathlib
from pathlib import Path
Path('path')
#WindowsPath('path')| 模块/方法 | 作用 | 备注 |
|---|---|---|
| Path.cwd() | 返回工作路径 | |
| Path.home() | 返回电脑用户的目录 | #WindowsPath(‘C:/Users/admin’) |
| Path(Path.home(), “Desktop”) | #拼接地址 | WindowsPath(‘C:/Users/admin/Desktop’) |
| Path(input).reslove() | 取绝对路径,等价于Path.cwd().joinpath(input) | |
| Path(INPUT).name | 返回文件名+文件后缀 | |
| Path(INPUT).stem | 返回文件名 | |
| Path(INPUT).relative_to(‘path’) | 去掉路径前缀 | |
| Path(INPUT).suffix | 返回文件后缀 | |
| Path(INPUT).suffixes | 返回文件后缀列表 | |
| Path(INPUT).root | 返回根目录 | |
| Path(INPUT).anchor | 自动判断返回drive或root | |
| Path.replace(input) | 文件重命名或移动 | |
| Path.joinpath(‘path’) | ||
| Path(INPUT).parts | 拆分路径,类似os.path.split(‘\’) | |
| Path(INPUT).parent | 返回父级目录 | |
| Path(INPUT).parents | 返回各级父级目录 | |
| Path(INPUT).exists() | 判断 Path 路径是否存在 | |
| Path(INPUT).is_dir() | 判断 Path 是否是一个文件夹 | |
| Path(INPUT).is_file() | 判断 Path 是否是一个文件 | |
| Path(INPUT).mkdir(exist_ok=True,parents=True) | 创建文件夹; | |
| Path(INPUT).rmdir() | 删除文件夹,文件夹必须为空 | |
| Path(INPUT).unlink(missing_ok=False) | 删除文件 | |
| Path(INPUT).iterdir() | 查找文件夹下的所有文件,返回的是一个生成器类型 | |
| Path(INPUT).glob(pattern) | 查找文件夹下所有与 pattern 匹配的文件,返回的是一个生成器类型; | |
| Path(INPUT).rglob(pattern) | 查找文件夹下所有子文件夹中与 pattern 匹配的文件,返回的是一个生成器 | |
| Path(INPUT).rename(‘INPUT1’) | 剪切UNPUT文件至INPUT1 | |
| Path(INPUT).with_name(‘INPUT1’) | 改变路径中文件名 | |
| Path(INPUT).with_suffix(‘INPUT1’) | 改变路径中文件名后缀 | |
| Path(INPUT).match(‘pattern’) | 测试路径是否符合pattern | |
| Path(INPUT).relative_to(‘path’) | 取相对路径 | |
| Path(INPUT).hardlink_to(‘path’) | 创建硬链接 | |
| Path(INPUT).symlink_to(‘path’) | 创建软链接 | |
| Path(INPUT).is_symlink() | 判断是否为软链接 | |
| Path(INPUT).as_posix() | 返回绝对路径 | |
| Path(INPUT).link_to(‘path’) | 创建硬链接 | |
| Path(INPUT).read_bytes() | 以bytes读取文件 | |
| Path(INPUT).read_text() | 以str读取文件 | |
| Path(INPUT).write_bytes(b’asdasd’) | 以bytes写入文件 | |
| Path(INPUT).write_text(‘asdasd’, encoding=‘utf-8’, errors=‘strict’) | 以str写入文件,并指定编码和错误处理方式 | |
| Path(INPUT).symlink_to(‘path’) | 创建软链接 |