前言

之前重写了视频字符画处理的代码,然后这两天又在研究命令行和网络。读了一点开源工具的代码,越来越觉得有必要针对性地学习一下一些重要的基础库。

这里呢就列个小清单,把我认为有必要学习的库写一下。

带 [ 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 常用库相关推荐

  1. python 图形库有哪些_python常用库有哪些

    今天将介绍20个常用工具的Python库,我相信你看完之后也会觉得离不开它们. 它们是:(推荐学习:Python视频教程) Requests.Kenneth Reitz写的最富盛名的http库.每个P ...

  2. python实用库_python常用库

    1,time 时间的表示形式: 格式化的字符串:'2018-2-4 14:08:01' 时间戳:1970年1月1日至今经历的秒数 元组(struct_time):time.struct_time(tm ...

  3. python常用类库_Python常用库

    Python常用库 一.time:时间处理模块 import time 1.time.time() time time() 返回当前时间的时间戳(1970纪元后经过的浮点秒数). import tim ...

  4. python标准库和第三方库_python常用标准库及三方库

    python 常用标准库及三方库 作者: yegle 链接: https://www.zhihu.com/question/20501628/answer/153211 84 著作权归作者所有.商业转 ...

  5. python都需要安装哪些库_python常用到哪些库?

    Python作为一个设计优秀的程序语言,现在已广泛应用于各种领域,依靠其强大的第三方类库,Python在各个领域都能发挥巨大的作用. 下面我们就来看一下python中常用到的库: 数值计算库: 1. ...

  6. python网络爬虫的第三方库_Python常用第三方库_网络爬虫、数据分析与WEB开发、机器学习...

    Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...

  7. python删库_python常用删除库的方法

    本文记于初学py的时候,两年后补发. python常用库的安装方法一般有几种,比如: 1.编译过的exe包,直接无脑下一步就可以了. 2.pip install 库名,快速安装.自动匹配最新版本. 3 ...

  8. python文档处理第三方库_Python常用第三方库大盘点

    Python语言有超过12万个第三方库,覆盖信息技术几乎所有领域.下面简单介绍下网络爬虫.自动化.数据分析与可视化.WEB开发.机器学习和其他常用的一些第三方库,如果有你感兴趣的库,不妨去试试它的功能 ...

  9. python机器学习库_Python机器学习库 Top 10,你值得拥有!

    随着人工智能技术的发展与普及,Python超越了许多其他编程语言,成为了机器学习领域中最热门最常用的编程语言之一.有许多原因致使Python在众多开发者中如此受追捧,其中之一便是其拥有大量的与机器学习 ...

最新文章

  1. 利用c语言检测气体浓度,一氧化碳气体检测仪的算法设计
  2. 【深度学习】通过python画出loss曲线
  3. docker问题备忘:“rpc error: code = 2 desc = containerd: container not found“
  4. 浅析HTML、CSS、JavaScript之间的联系与区别
  5. on java8学习笔记2022.2.19-2022.2.20
  6. Docker实践,来自沪江、滴滴、蘑菇街架构师的交流分享
  7. 【OpenCV函数】轮廓提取;轮廓绘制;轮廓面积;外接矩形
  8. STM32之SysTick原理
  9. 资源放送丨《数据模型重构案例分享》PPT视频
  10. Shiro学习(24)在线回话管理
  11. 多个div中的label标签对齐
  12. mysql case默认_MySQL数据库架构和同步复制流程
  13. 具有Eclipse和嵌入式JBoss HornetQ Server的简单JMS 1.1生产者和使用者示例
  14. 安装mysql查看随机密码命令_centos7/8 yum安装mysql8并查看默认root密码
  15. c++堆内存默认大小_Java 自动内存管理
  16. python pip 安装 win10 解决anacoda代理错误 ProxyError: Conda cannot proxy configuration
  17. 瑞芯微读取寄存器_瑞芯微Android软件中添加ALC5640 音频CODEC 的寄存器修改
  18. excel数据处理_如何用excel做仓库管理软件?这样做很好用,有权限和流程
  19. 深度学习?不一定非得搞“黑箱”
  20. 电路图:LM3886 BTL功放电路图

热门文章

  1. 微软开源基于.NET Core的量子开发工具包 QDK
  2. Identity Server 4 - Hybrid Flow - 使用ABAC保护MVC客户端和API资源
  3. Asp.Net Core 使用Quartz基于界面画接口管理做定时任务
  4. asp.net core源码飘香:Logging组件
  5. 使用VS Code从零开始开发调试.NET Core 1.1
  6. ASP.NET Core 1.0 开发记录
  7. 回顾build 2016:你好,这是微软迄今最好的Windows开发平台
  8. 判断对象是否存在某个属性
  9. oracle 数据库中拆分,oracle数据库字符串拆分
  10. PHP 电子商城基本数据表