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. 各方法优缺点分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/298240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

401 Palindrome

这道题最初我是没理解清楚题意,我以为那些reverse栏空白的字母是省略了.后来在这个论坛找到了更多的测试数据,发现了自己理解错了,重新读题 ,修改了下代码- -.弄了很久才AC 我的思路和别人有点不同的是,我是通过计算来得到在常量表中的位置 好吧 这道题本来该总结很多的,今天…

东北大姐剪纸被误认为油画,遭人质疑二十多年,只因太过逼真,看完后:真香!不愧是天下第一剪!...

全世界只有3.14 % 的人关注了爆炸吧知识“这是剪纸?太惟妙惟肖了,我还以为是水彩画呢!”这是一位网友的留言。茂盛的树木、潺潺的流水……这些栩栩如生的场景,真难想象竟是出自,一双巧手和一把剪刀。这些作品,全部来自…

2021 年 9 月 TIOBE 指数 C# 同比增长突破 1.2%

TIOBE 编程社区指数是编程语言流行程度的指标。该指数每月更新一次。评级基于全球熟练工程师、课程和第三方供应商的数量。谷歌、必应、雅虎、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评分。C# 近期发展状态不错,依旧在榜单中排第五,但排…

java基础面向对象_java基础面向对象

一、面向对象之封装1. 面向对象的三个特征是:封装、继承和多态。2. Java开发过程:要实现某个功能,首先要找能够实现这个功能的对象,如果没有找到,就自己造一个对象,将要实现的功能定义到对象中,…

linux 学习笔记 显示压缩文件 gong.zip 的文件内容

#zip -v gong zip zip info: xxx >删除压缩文件中俄smart.txt 文件 #zip -d gong.zip smart.txt deleting:smart.txt >向压缩文件中gong.zip中添加rpm_info.txt文件 #zip -m gong.zip ./rpm_info.txt adding:rpm_info.txt deflated 79% Unzip命令解压缩文件 >将gong.z…

2010年5月系统集成项目管理工程师上午试卷参考答案(讨论版)

鉴于个人精力有限,其他答案将由51CTO相关工作人员不断更新,详见http://training.51cto.com/art/201005/200323.htm以题会友,欢迎跟贴拍砖、讨论。

python qt信号在qml 的使用_QML与Python通信

对于Python3和QML通信,实际上就是 PyQt5QMLPython3混合编程,这是必须的,因为QML做图形界面比较容易,但是做功能实现就用Python比较好,虽然QML也能嵌入 JavaScript代码进行实现,但是这样话还不如用Python来实…

那些35岁的程序员都去哪了

阅读本文大概需要11分钟。大家好,我是findyi,前段时间写过一篇关于大龄程序员的文章:那些40岁的程序员都去哪了,引发了大家的思考和讨论,不少读者私聊问:除了这些出路,还有没有其他可能&#xf…

Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据 二)...

在Sharepoint学习笔记---如何在Sharepoint2010网站中整合Crystal Report水晶报表(显示数据一)中,解释了如何把Crystal Report整合到Sharepoint2010并把报表数据显示出来,但这样并不完整,因为我们在开发时是以系统帐户进…

那些拧不开瓶盖的女生全都是装的?理工男这样想......

全世界只有3.14 % 的人关注了爆炸吧知识昨天,超模君我正在思考人生,八岁的表妹突然提着一瓶矿泉水站在了我的面前。她可怜兮兮的说:“我想喝水,但是拧不开”。我:“........."超模君我明明亲眼见过她一口气拧开过…

java 代码同步_Java同步代码块 转

Java 同步块(synchronized block)用来标记方法或者代码块是同步的。Java同步块用来避免竞争。本文介绍以下内容:Java同步关键字(synchronzied)实例方法同步静态方法同步实例方法中同步块静态方法中同步块Java同步示例Java同步关键字(synchronized)Java中的同步块用s…

Office 2010 64位版本

最新的Office 2010有了x86和x64两种不同的版本,众所周知的使用x64版本具有可以支持更大的内存等特点,但是也会出现一定的兼容性问题。其中感觉影响比较大的是Access的32位版本和64位版本创建的数据库无法通用,这样以前创建的Access文件就无法…

JUnit 测试

Junit 使用 1、忽略测试方法。在使用Test的方法上使用Ignore,将不会对此方法进行测试 2、测试套件 解决的问题: 1、对测试类进行统一测试,而不必在单独测试类上一个一个进行测试。 使用JUnit的RunWith以及SuiteClassses注解,Suite…

【另类见解】秒杀并非高不可攀

“一提到秒杀很简单这个话题,我知道要被别人鄙视了:你不懂高并发... 这年头开头不画个思维导图都觉得掉价image谈到秒杀,网络上不少于几千片文章,但是大多大同小异。如果你的微信当中关注了几个编程技术类的公众号,我敢…

我又相信爱情了!

1 圣诞限定款的肥宅快乐水更好喝了吗?不!更贵了2 周边鬼才!这手机壳我爱了3 你以为是个王者,其实是个大脸......4 高温超导材料达到临界温度后能使物体悬浮在不同位置5 火山爆发你见过吗?6 我又相信爱情了!…

opencv计算两数组的乘积_#剑指Offer#12. 构建乘积数组

题目描述:给定一个数组A[0,1,...,n-1],请构建一个数组B[0,1,...,n-1]。其中B中的元素B[i]A[0] * A[1]... * A[i-1] * A[i1]... * A[n-1]。不能使用除法。解题思路:首先,仔细理解题意,B[i]是A数组所有元素的乘积,但是没…

python引用numpy出错_使用numpy时出错

我尝试使用pandas python进行excel操作。在每当我尝试使用pandas库时,它都会给我错误的提示:numpy没有安装。在现在,当我尝试安装pip install numpy和pip安装pandas时,它说需求已经满足了。在但是当我尝试做一个简单的numpy教程时…

中国移动:面向全业务运营的安全管理平台

在2008年的一个电信运营支撑系统论坛上,来自中国移动的集团网络部的安全副处长周智先生做了一个题为《面向全业务运营的安全运行管理系统定位及建设思路》的报告。 在这个报告中,周处首先分析了全业务运营环境下的安全挑战,然后提出了在全业务…

记一次 .NET 某桌面奇侠游戏 非托管内存泄漏分析

一:背景 1. 讲故事说实话,这篇dump我本来是不准备上一篇文章来解读的,但它有两点深深的感动了我。无数次的听说用 Unity 可做游戏开发,但百闻不如一见。游戏中有很多金庸武侠小说才有的名字,太赏心悦目了。000000df315…

成年人的数学公式

1 成年人的数学公式2 唯一对我说过“别走好吗”的人3 主人发起疯来有多可怕4 别人家的狗看到主人有危险▼你家的……▼5 蜘蛛捕食瞬间6 蜡烛重燃(冒的白烟是固态小颗粒的石蜡蒸汽,可燃)你点的每个赞,我都认真当成了喜欢