bisect
bisect是二分法的意思。bisect库常用于有序序列的查找和插入。
1、查找
1 2 3 4 5 6 7 8 9
| import bisect a = [1,4,6,8,12,15,20] position = bisect.bisect(a, 13) print(position)
a.insert(position, 13) print(a)
|
2、插入
1 2 3 4 5
| import bisect a = [1,4,6,8,12,15,20] bisect.insort(a,13) print(a)
|
golb
glob模块是python自己带的一个文件操作模块,可以查找符合自己需求的的文件,并且支持通配符操作。
案例1:当前路径文件下以.py结尾的所有文件
1 2 3 4
| import glob
for fname in glob.glob("./*.py"): print(fname)
|
案例2:当前路径文件下以python开头并且有一个字符的所有py文件
1 2 3 4
| import glob
for fname in glob.glob("./python?.py"): print(fname)
|
案例3:当前路径文件下以python开头并且有一个数字的所有py文件
1 2 3 4
| import glob
for fname in glob.glob("./python[0-9].py"): print(fname)
|
sched
Python自带一个调度器模块sched,它能实现优先级队列/延迟队列和定时队列。
1、延迟队列/延迟队列
1 2 3 4 5 6 7 8
| import sched
def do_work(name): print(f'你好:{name}')
sch = sched.scheduler() sch.enter(5, 1, do_work, argument=('Tyler', )) sch.run()
|
只有当两个任务同时运行的时候,才会去检查优先级。”同时运行”的意思是必须是精确时间。
1 2 3 4 5 6 7 8 9 10 11 12 13
| import sched import time import datetime
def do_work(name): print(f'你好:{name}')
sch = sched.scheduler(time.time, time.sleep) start_time = datetime.datetime.now() + datetime.timedelta(seconds=3) start_time_ts = start_time.timestamp() sch.enterabs(start_time_ts, 2, do_work, argument=('Tom', )) sch.enterabs(start_time_ts, 1, do_work, argument=('Tyler', )) sch.run()
|
2、定时队列
1 2 3 4 5 6 7 8 9 10 11 12 13
| import sched import time import datetime
def do_work(name, place): print(f'你好:{name},你在:{place}')
sch = sched.scheduler(time.time, time.sleep) start_time = datetime.datetime.now() + datetime.timedelta(seconds=3) start_time_ts = start_time.timestamp() sch.enter(3, 2, do_work, argument=('Tyler', 'beijing')) sch.enterabs(start_time_ts, 1, do_work, argument=('Tom', 'shanghai')) sch.run()
|
secrets
secrets是一个用于生成秘钥的库。
1 2 3 4 5
| from secrets import token_bytes, token_hex, token_urlsafe
print(token_bytes(10)) print(token_hex(10)) print(token_urlsafe(10))
|