一、os库
系统文件,环境等常用的库,对文件和环境等进行操作,
os.path.dirname(url) 获取传入url的路径 os.path.basename(url) 获取url的文件名+后缀 os.path.isdir(url) 判断url是否是路径 os.path.isfile(url) 判断url是否是文件 os.path.abspath(__file__) 获取绝对路径 os.path.join(folder1,folder2,folder3) 把目录串成路径 os.path.split(url) 分割url成路径和文件名+后缀 os.path.splitext(url) 分割路径为两部分,前部分为路径和文件名,后部分为后缀 os.path.getatime(url) 最近访问时间 os.path.getmime(url) 最近修改时间 os.path.getctime(url) 创建时间 os.path.getsize(url) 返回文件大小
os.walk 遍历的目录的地址, 返回的是一个三元组(root,dirs,files)
os.getcwd() 返回当前工作目录
os.system('ls') 执行系统命令
os.environ 获取系统环境变量
os.seq 系统路径分隔符
os.mkdir 创建一个路径
os.listdir 返回所哟文件和路面
os.rmdir 删除单级路径,目录不为空无法删除
二、time、datetime
time.time() 返回时间戳
time.ctime() 函数把一个时间戳转化为time.asctime()的形式 Tue Feb 17 10:00:18 2022
time.sleep(1) 休眠时间
time.strftime("%Y-%m-%d %H:%M:%S",t) 格式化时间
三、typing
NewType来辅助函数创造不同的类型
NoReturn,当一个方法没有返回结果时,为了注解它的返回类型,我们可以将其注解为 NoReturn
Sequence,是 collections.abc.Sequence 的泛型
Set集合,是 set 的泛型;AbstractSet、是 collections.abc.Set 的泛型
Dict、字典,是 dict 的泛型;Mapping,映射,是 collections.abc.Mapping 的泛型
Tuple、元组,是 tuple 的泛型
Mapping:collections.abc.Mapping的泛型(generic)版本
List:list的泛型(generic)版本,用于注解(annotate)返回类型
Iterable:collections.abc.Iterator的泛型版本
四、json
json.loads 解析json成为字符串
json.dumps 加载字符串成为json
json.load 解析json文件
json.dump 将str以json的格式保存成文件
五、enum
from
enum
import
Enum, unique
枚举类中的key也不能相同from
enum
import
IntEnum
枚举类中的Value只能是整型数字
- 枚举支持迭代器,可以遍历枚举成员
枚举的定义
六、sys
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit 程序退出
sys.modules.keys() 返回所有已经导入的模块列表
sys.stdout 标准输出
sys.stdin 标准输入
七、logging
Logging.basicConfig() 需要在开头就设置,在中间设置并无作用
Handler 处理器类型有很多种,比较常用的有三个,StreamHandler,FileHandler,NullHandler
StreamHandler
sh = logging.StreamHandler(stream=None)
sh.setLevel(logging.WARN) #指定日志级别,低于WARN级别的日志将被忽略
sh.setFormatter(formatter_name) # 设置一个格式化器formatter
sh.addFilter(filter_name) # 增加一个过滤器,可以增加多个
八、socket
九、threading
t = threading.Thread(target=one,args=(,)) #建立一个线程并且赋给t1,这个线程指定调用方法one,并且不带参数
t.setDaemon(True)#声明t为守护线程,设置的话,子线程将和主线程一起运行,并且直接结束,不会再执行循环里面的子线程
threading.current_thread()等同于currentThread(),返回当前Thread对象,对应于调用者的控制线程。如果未通过threading模块创建调用者的控制线程,则返回具有有限功能的虚拟线程对象。
threading.Lock()返回新原始锁定对象的工厂函数。一旦线程获得它,后续尝试获取它就会阻塞,直到它被释放; 任何线程都可以释放它。
threading.RLock()返回新的可重入锁定对象的工厂函数。必须由获取它的线程释放可重入锁。一旦线程获得了可重入锁,同一个线程可以再次获取它而不会阻塞; 线程必须在每次获取它时释放一次。
threading.Semaphore([ value] )返回新信号量对象的工厂函数。信号量管理一个计数器,表示release()呼叫数减去acquire()呼叫数 加上初始值。该acquire()方法在必要时阻止,直到它可以返回而不使计数器为负。如果没有给出,则值默认为1。
十、shutil
shutil.copyfileobj(fsrc,fdst,[length]) 将类似文件对象fsrc的内容复制到类似文件对象的fdst中
shutil.copyfile(src,dst) 将名为src的文件内容复制到名为dst的文件,然后返回dst
shutil.copy() 将文件src复制到文件或目录dst。src和dst应为字符串。如果dst指定目录,则文件将使用src的基本文件名复制到dst中
shutil.copy2(src,dst) 与copy()相同,但是copy2()也尝试保留所有文件元数据
shutil.copytree(src,dst) 递归复制以src为根的整个目录树,由dst命名的目标目录不能已经存在
shutil.rmtree(src,dst) 删除目录
shutil.move() 移动文件或目录
十一、queue
同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁原语,能够在多线程中直接使用。可以使用队列来实现线程间的同步
queue.Queue(maxsize=0)先进先出FIFO队列,最早进入队列的数据拥有队列的优先权。
queue.LifoQueue(maxsize=0)后进先出(Last In First Out: LIFO)队列,最后进入队列的数据拥有出队列的优先权,就像栈一样。入参 maxsize 与先进先出队列的定义一样。
优先级队列,比较队列中每个数据的大小,值最小的数据拥有出队列的优先权。
Queue.put(item) 写入队列,timeout等待时间
Queue.get([block[, timeout]]) 获取队列,timeout等待时间
Queue.get_nowait() 相当于Queue.get(False),非阻塞方法
Queue.qsize() 返回队列的大小
Queue.empty() 如果队列为空,返回True,反之False
Queue.full() 如果队列满了,返回True,反之False,Queue.full 与 maxsize 大小对应
Queue.task_done() 在完成一项工作之后,Queue.task_done()函数向任务已经完成的队列发送一个信号。每个get()调用得到一个任务,接下来task_done()调用告诉队列该任务已经处理完毕。
Queue.join() 实际上意味着等到队列为空,再执行别的操作
十二、itertools
count()
会创建一个无限的迭代器
cycle()
会把传入的一个序列无限重复下去
repeat()
负责把一个元素无限重复下去
chain()
可以把一组迭代对象串联起来,形成一个更大的迭代器
groupby()
把迭代器中相邻的重复元素挑出来放在一起
map()
和map()
的区别在于,imap()
可以作用于无穷序列,并且,如果两个序列的长度不一致,以短的那个为准