python的所有库_Python 常用库
前言
之前重写了视频字符画处理的代码,然后这两天又在研究命令行和网络。读了一点开源工具的代码,越来越觉得有必要针对性地学习一下一些重要的基础库。
这里呢就列个小清单,把我认为有必要学习的库写一下。
带 [ x ] 的表示已完成
时间
time:对 c 语言库的封装,优点是速度快。
常用的函数:时间戳 - time.time(),睡眠 - time.sleep()
datetime:时间日期处理库,比 time 更强大,支持在日期上进行各种操作(加减乘除)。
maya/arrow: 第三方时间日期处理库,比 datetime 更好用。
系统
用于访问一些由 Python Interpreter 维护的变量,一般都和系统、流、命令行参数之类的相关。
用于使用一些操作系统相关的函数,还有操作系统环境变量。(相关:比如 os.fork 在 windows 上就用不了)
系统调用函数,目的在于取代 os.system 和 os.spwan* 的库,并提供更强大的功能。
是 fabric2 的本地方法调用模块,比 subprocess 更强大。
SSH 远程执行命令
Python 的 SSHv2 协议实现。使用 Python 远程执行命令的首选库。
构建在 paramiko 和 pyinvoke 之上,提供更方便的远程命令执行功能。(运维用)
文件路径
该模块使用类来表示系统路径,而且是操作系统无关的。终于不需要去管 Windows 和 Linux 下分隔符的差别了。
更方便的是,路径之间的组合可以直接通过“计算”实现。(它还提供了 glob 简化正则表达式,用于路径匹配)
这是一个上下文管理库,可用于自定义能使用 with 上下文管理的类。常用于 网络、数据库连接之类的地方。
字符串处理
[ x ] re
正则,不解释
提供了一个 str 流对象,可读可写。API 等同于 open() 返回的流对象。类似 Java 的 StringBuffer BytesBuffer
网络库(客户端)
[ x ] requests: 3rd
超易用的 http 请求库
网络协议处理的标准库(说网络协议,自然不仅 http 了)
Web 应用框架(服务端)
[ x ] flask: 3rd
轻量的 web 应用框架(服务端),用来写 RESTful API 特别方便。
依赖管理、环境隔离
环境管理和依赖管理的终极解决方案,缺点是 lock 慢到吐血。
[x] poetry: 比 pipenv 更好用!
[ x ] pip
依赖管理工具,install uninstall list 都不会用还敢叫 Python 程序员?
项目打包工具,配置项还挺多的,需要用的时候再查文档吧。。
Python 的依赖管理工具,曾经很混乱。不过现在算是越做越好了。更多的信息参见Python Packaging User Guide
迭代器、数据结构、高阶函数
日志(入门简单,深入有点难。。)
比 logging 更好用,而且支持彩色日志输出。
测试(有待提高)
官方测试框架,师出 Junit。缺点是繁琐。
[ x ] pytest: 3rd
看到很多热门开源项目都用的 pytest,有时间得学一下。
使用最多的替换掉网络请求的方式,几乎所有场景下都可以用。所有网络请求和 rpc 调用等都可以用 mock.patch 来模拟返回值。
就像用Java的Mockito一样。
数据转换
a. 持久化(这个很简单)
一个对数据进行 object 和 bytes 之间的转化的模块。如果你只需要使用 Python 读取这些数据,用 pickle 会是个很好的选择。
[ x ] json
和 pickle 很类似,不过它做的是 object 和 json 之间的转化。
这个模块在网络开发中用得很多。
b. 数据库(已搞定)
如果需要保存数据,而且需要对其做更复杂的操作,就需要用到数据库了。
[ x ] sqlite3: Python 自带的文件数据库,用于学习很方便。而且 python 数据库驱动都遵循同一个 dbapi 标准,学会一个就学会了所有。
[ x ] PyMySQL: 3rd MySQL 的第三方连接库,遵循 dbapi 标准。
[ x ] SQLAlchemy:ORM 框架,而且有数据库连接池和详细的日志系统。
c. 结构化二进制
执行 Python 对象与 C struct (bytes) 之间的转换,一般用于解析或构建下列数据:
1. 网络协议中的报文:IP包、TCP/UDP 包
2. 音乐、视频文件:wav/mp3/mp4/midi 等
并发并行
多进程,由于 GIL 的存在,计算密集型工作用多线程基本没用,这时就需要这个库,或者用 C API.
另外因为多进程不共享数据,因此需要使用 Queue 或者 Pipe 通信。
API 和 multiprocessing 非常类似,但是要搞清楚关键区别:一个是进程一个是线程。
[ x ] concurrent.futures
线程池/进程池,而且提供更高层的抽象。
进阶:线程池、数据库连接池、消息队列
异步I/O(适用于网络编程)
协程相当于轻量级线程,特别适用于I/O密集场景。
任务调度
我有个个人项目,需要每天定时发送消息。我最初是直接加了个线程来干这个事。。然后我发现了,原来有 scheduler 这个东西。。
apscheduler:支持 asyncio 的 scheduler
其他(偏向特定领域了,非必要)
1. 数据分析/机器学习
numpy
pandas
matplotlib
2. 和 C 语言通信
和C语言通信一般有两个用途,一是做性能优化,二是用于调用一些不开源的库。
cffi: 3rd 不需要先行编译,可直接在Python里写C代码。而且简单干净。
cython: 3rd 使用特殊语法,可同时调用 C 和 Python。需要性能,就用这个。
P.S. a. 为啥不说 ctypes: 因为感觉 api 太丑。用 Python 就图个乐子,所以拒。b. C 拓展:考虑到最近很多人都说 PyPy 是未来,很多项目也明确表示支持 PyPy,C拓展方式还是尽量避免。这样以后移植也方便。c. 各方法优缺点分析
python的所有库_Python 常用库相关推荐
- python 图形库有哪些_python常用库有哪些
今天将介绍20个常用工具的Python库,我相信你看完之后也会觉得离不开它们. 它们是:(推荐学习:Python视频教程) Requests.Kenneth Reitz写的最富盛名的http库.每个P ...
- python实用库_python常用库
1,time 时间的表示形式: 格式化的字符串:'2018-2-4 14:08:01' 时间戳:1970年1月1日至今经历的秒数 元组(struct_time):time.struct_time(tm ...
- python常用类库_Python常用库
Python常用库 一.time:时间处理模块 import time 1.time.time() time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). import tim ...
- python标准库和第三方库_python常用标准库及三方库
python 常用标准库及三方库 作者: yegle 链接: https://www.zhihu.com/question/20501628/answer/153211 84 著作权归作者所有.商业转 ...
- python都需要安装哪些库_python常用到哪些库?
Python作为一个设计优秀的程序语言,现在已广泛应用于各种领域,依靠其强大的第三方类库,Python在各个领域都能发挥巨大的作用. 下面我们就来看一下python中常用到的库: 数值计算库: 1. ...
- python网络爬虫的第三方库_Python常用第三方库_网络爬虫、数据分析与WEB开发、机器学习...
Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...
- python删库_python常用删除库的方法
本文记于初学py的时候,两年后补发. python常用库的安装方法一般有几种,比如: 1.编译过的exe包,直接无脑下一步就可以了. 2.pip install 库名,快速安装.自动匹配最新版本. 3 ...
- python文档处理第三方库_Python常用第三方库大盘点
Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...
- python机器学习库_Python机器学习库 Top 10,你值得拥有!
随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...
最新文章
- 利用c语言检测气体浓度,一氧化碳气体检测仪的算法设计
- 【深度学习】通过python画出loss曲线
- docker问题备忘:“rpc error: code = 2 desc = containerd: container not found“
- 浅析HTML、CSS、JavaScript之间的联系与区别
- on java8学习笔记2022.2.19-2022.2.20
- Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
- 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形
- STM32之SysTick原理
- 资源放送丨《数据模型重构案例分享》PPT视频
- Shiro学习(24)在线回话管理
- 多个div中的label标签对齐
- mysql case默认_MySQL数据库架构和同步复制流程
- 具有Eclipse和嵌入式JBoss HornetQ Server的简单JMS 1.1生产者和使用者示例
- 安装mysql查看随机密码命令_centos7/8 yum安装mysql8并查看默认root密码
- c++堆内存默认大小_Java 自动内存管理
- python pip 安装 win10 解决anacoda代理错误 ProxyError: Conda cannot proxy configuration
- 瑞芯微读取寄存器_瑞芯微Android软件中添加ALC5640 音频CODEC 的寄存器修改
- excel数据处理_如何用excel做仓库管理软件?这样做很好用,有权限和流程
- 深度学习?不一定非得搞“黑箱”
- 电路图:LM3886 BTL功放电路图
热门文章
- 微软开源基于.NET Core的量子开发工具包 QDK
- Identity Server 4 - Hybrid Flow - 使用ABAC保护MVC客户端和API资源
- Asp.Net Core 使用Quartz基于界面画接口管理做定时任务
- asp.net core源码飘香:Logging组件
- 使用VS Code从零开始开发调试.NET Core 1.1
- ASP.NET Core 1.0 开发记录
- 回顾build 2016:你好,这是微软迄今最好的Windows开发平台
- 判断对象是否存在某个属性
- oracle 数据库中拆分,oracle数据库字符串拆分
- PHP 电子商城基本数据表