Python3.x 标准模块库目录(上篇)

先看这个打广告的。。
https://blog.csdn.net/broadview2006/article/details/68924052

引言:Python的强大体现在“模块自信”上,因为Python不仅有很强大的自有模块(标准库),还有海量的第三方模块(或者包、库),并且很多开发者还在不断贡献在自己开发的新模块(或者包、库)。本文将向大家概述介绍Python的自有模块——标准库。
本文选自《跟老齐学Python:轻松入门》。

“Python自带‘电池’”,这种说法流传已久。
  在Python被安装的时候,就有不少模块也随着安装到本地的计算机上了。这些东西就如同“电力”一样,让Python拥有了无限生机,能够轻而易举地免费使用很多模块。所以,称其为“自带电池”。
  那些在安装Python时就默认已经安装好的模块被统称为“标准库”。
  熟悉标准库是学习编程必须要做的事。

引用的方式

所有模块都服从下述引用方式,以下是最基本的,也是最常用的,还是可读性非常好的引用方式。

import modulename

例如:

>>> import pprint
>>> a = {"lang":"python", "book":"www.itdiffer.com", "teacher":"qiwsir", "goal":"from beginner to master"}
>> pprint.pprint(a)
{'book': 'www.itdiffer.com',
 'goal': 'from beginner to master',
 'lang': 'python',
 'teacher': 'qiwsir'}

在对模块进行说明的过程中,以标准库pprint为例。
  以pprint.pprint()的方式使用模块中的一种方法,这种方法能够让字典格式化输出。看看结果是不是比原来更容易阅读了呢?
  在import后面,理论上可以跟好多模块名称。但是在实践中,还是建议大家一次一个名称,太多了不容易阅读。
这是用import pprint样式引入模块,并以点号“.”(英文半角)的形式引用其方法。
关于引入模块的方式,前文介绍import语句时已经讲过,这里再次罗列,权当复习。

>>> from pprint import pprint

意思是从pprint模块中只将pprint()引入,之后就可以直接使用它了。

>>> pprint(a)
{'book': 'www.itdiffer.com',
 'goal': 'from beginner to master',
 'lang': 'python',
 'teacher': 'qiwsir'}

再懒一些还可以这样操作:

>>> from pprint import *

这就将pprint模块中的一切都引入了,于是可以像上面那样直接使用模块中的所有可用的内容。
  诚然,如果很明确使用模块中的哪些方法或属性,那么使用类似from modulename import name1, name2, name3…也未尝不可。需要再次提醒读者注意的是,不能因为引入了模块而降低了可读性,让别人不知道呈现在眼前的方法是从何而来的。
  有时候引入的模块或者方法名称有点长,这时可以给它重命名。如:

>>> import pprint as pr
>>> pr.pprint(a)
{'book': 'www.itdiffer.com',
 'goal': 'from beginner to master',
 'lang': 'python',
 'teacher': 'qiwsir'}

当然,还可以这样操作:

>>> from pprint import pprint as pt
>>> pt(a)
{'book': 'www.itdiffer.com',
 'goal': 'from beginner to master',
 'lang': 'python',
 'teacher': 'qiwsir'}

但是不管怎样,一定要让别人看得懂,且要过了若干时间,自己也还能看得懂。

深入探究

继续以pprint为例,深入研究:

>>> import pprint
>>> dir(pprint)
['PrettyPrinter', '_StringIO', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_commajoin', '_id', '_len', '_perfcheck', '_recursion', '_safe_repr', '_sorted', '_sys', '_type', 'isreadable', 'isrecursive', 'pformat', 'pprint', 'saferepr', 'warnings']

对dir()并不陌生,从结果中可以看到pprint的属性和方法。其中有的是以双画线、单画线开头的,为了不影响我们的视觉,先把它们去掉。

>>> [ m for m in dir(pprint) if not m.startswith('_') ]
['PrettyPrinter', 'isreadable', 'isrecursive', 'pformat', 'pprint', 'saferepr', 'warnings']

针对这几个,为了能够搞清楚它们的含义,可以使用help(),比如:

>>> help(isreadable)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'isreadable' is not defined

这样做是错误的。大家知道错在何处吗?

>>> help(pprint.isreadable)

前面是用import pprint方式引入模块的。

Help on function isreadable in module pprint:
 
isreadable(object)
    Determine if saferepr(object) is readable by eval().

通过帮助信息,能够查看到该方法的详细说明。可以用这种方法一个一个地查看,反正也不多,对每个方法都要熟悉。
  需要注意的是,pprint.PrettyPrinter是一个类,后面的是方法。
  再回头看看dir(pprint)的结果:

>>> pprint.__all__
['pprint', 'pformat', 'isreadable', 'isrecursive', 'saferepr', 'PrettyPrinter']

这个结果是不是很眼熟?除了"warnings"之外,跟前面通过列表解析式得到的结果一样。
  其实,当我们使用from pprint import *的时候,就是将__all__里面的方法引入。

帮助、文档和源码

你能记住每个模块的属性和方法吗?比如前面刚刚查询过的pprint模块中的属性和方法,现在能背诵出来吗?相信大部分人是记不住的。所以,我们需要使用dir()和help()。

>>> print(pprint.__doc__)
Support to pretty-print lists, tuples, & dictionaries recursively.
 
Very simple, but useful, especially in debugging data structures.
 
Classes
-------
PrettyPrinter()
    Handle pretty-printing operations onto a stream using a configured
    set of formatting parameters.
 
Functions
---------
 
pformat()
    Format a Python object into a pretty-printed representation.
 
pprint()
    Pretty-print a Python object to a stream [default is sys.stdout].
 
saferepr()
    Generate a 'standard' repr()-like value, but protect against recursive
    data structures.

pprint.__doc__是查看整个类的文档,还知道整个文档是写在什么地方的吗?
  还是使用pm.py文件,增加如下内容:

#!/usr/bin/env python
# coding=utf-8
 
"""        #增加的
This is a document of the python module.  #增加的
"""        #增加的
 
def lang():
    ...    #省略了,后面的也省略了

在这个文件的开始部分,所有类、方法和import之前,写一个用三个引号包裹着的字符串,这就是文档。

>>> import sys
>>> sys.path.append("~/Documents/VBS/StarterLearningPython/2code")
>>> import pm
>>> print(pm.__doc__)



This is a document of the python module.

这就是撰写模块文档的方法,即在.py文件的最开始写相应的内容。这个要求应该成为开发者的习惯。
  对于Python的标准库和第三方模块,不仅可以查看帮助信息和文档,而且还能够查看源码,因为它是开放的。
  还是回到dir(pprint)中找一找,有一个__file__属性,它会告诉我们这个模块的位置:

>>> print(pprint.__file__)
/usr/lib/python3.4/pprint.py

接下来就可以查看这个文件的源码:

$ more /usr/lib/python3.4/pprint.py
#  Author:      Fred L. Drake, Jr.
……
"""Support to pretty-print lists, tuples, & dictionaries recursively.
Very simple, but useful, especially in debugging data structures.
Classes
-------
PrettyPrinter()
    Handle pretty-printing operations onto a stream using a configured
    set of formatting parameters.
 
 
Functions
---------
 
pformat()
    Format a Python object into a pretty-printed representation
 
.....
"""

这里只查抄了文档中的部分信息,是不是跟前面通过__doc__查看的结果一样呢?
  请读者在闲暇时间阅读源码。事实证明,这种标准库中的源码是质量最好的。阅读高质量的代码是提高编程水平的途径之一。

本文选自《跟老齐学Python:轻松入门》,点此链接可在博文视点官网查看此书。
  在这里插入图片描述
想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
在这里插入图片描述




再看这个打酱油的。。

https://blog.csdn.net/ooxxshaso/article/details/79803102

python内置模块

time模块

时间戳time.time()#打印出的是秒数,从1970年开始算

time.localtime()#显示的是结构化时间,当地时间

time.gmtime()#显示的也是结构化时间,不过是世界标准时间

将结构化时间转换成时间戳,time.mktime(time.localtime())

将结构化时间转换成字符串时间,time.strftime("%Y-%m-%d %X",time.localtime())

将字符串时间转换为结构化时间,time.strptime(“2018:04:03:15:00:00”,"%Y:%m:%d:%X")

直观的显示时间:time.asctime();time.ctime()

还有datetime模块中的datetime中的now方法也能够显示现在的时间

>>> import time
>>> time.time()
1522738511.5656116
>>> t = time.localtime()#显示结构化时间,可以取出
>>> t
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=3, tm_hour=14, tm_min=55, tm_sec=58, tm_wday=1, tm_yday=93, tm_isdst=0)
>>> t.tm_year
2018
>>> t.tm_yday
93
>>> t1 = time.gmtime()
>>> t1
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=3, tm_hour=7, tm_min=1, tm_sec=3, tm_wday=1, tm_yday=93, tm_isdst=0)
>>> #将结构化时间转换成时间戳
>>> t2 = time.mktime(time.localtime())
>>> t2
1522740660.0
>>> t3 = time.strftime("%Y-%m-%d %X",time.localtime())
>>> t3
'2018-04-03 15:35:24'
>>> t4 = time.strptime("2018:04:03:15:00:00","%Y:%m:%d:%X")
>>> t4
time.struct_time(tm_year=2018, tm_mon=4, tm_mday=3, tm_hour=15, tm_min=0, tm_sec=0, tm_wday=1, tm_yday=93, tm_isdst=-1)
>>> t5 = time.asctime()
>>> t5
'Tue Apr  3 15:43:20 2018'
>>> t6 = time.ctime()
>>> t6
'Tue Apr  3 15:43:35 2018'
>>> import datetime
>>> t7 = datetime.datetime.now()
>>> t7
datetime.datetime(2018, 4, 3, 15, 45, 39, 99611)
>>> 

random模块

os模块

sys模块

json模块

re模块

ret = re.findall('xiaom','xaiosmmkxiaomdshaid')
print(ret)
#元字符:^ $ * + ? {} [] \ ( ) \

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
正则表达式,参见菜鸟教程

re模块下的方法:

re.findall()方法返回的是一个列表,切记

re.search()方法返回的是一个对象,需要用group()方法来取出其中的值

re.match()方法和search方法类似,只是从第一个字符开始匹配,返回的也是一个对象,需要用group()方法取出

re.split()方法,分割字符串,可以用字符集[]来多次分割,返回的是一个列表

re.sub()替换方法,可以用四个参数,第一个参数为匹配的规则(需要替换的内容),第二个参数为替换成的内容,第三个参数为需要替换的字符串,第四个参数为可选参数,默认为全部替换

re.compile() 设立一个匹配的规则,可以调用其他的匹配方法,完成多次匹配

re.finditer(),与findall的功能一样,不同的是finditer返回的是迭代器对象,next取出后再用group取出具体值

用?:来取消查找的优先级

import re
print(re.findall('a','ahsk sdahoi'))#['a', 'a']会返回所有满足条件的结果,放在列表中
print(re.search('hello','dsahello sdhashelloca').group())#hello 只返回第一个找到的值并且以对象的方式来存储,需要调用group方法来取出其中的数值,可以用?P<>来给要查找的内容命名
print(re.match('a','abc'))#<_sre.SRE_Match object; span=(0, 1), match='a'> 和search类似,不同的是字符串只是在开始的位置进行匹配,需要group()方法取出
print(re.split('[ab]','abcd'))#['', '', 'cd'] 先按'a'分割得到''和bcd,再将''和''bcd'按b进行分割,返回的是一个列表
print(re.sub('\d','hello','dsadfa1afas3fd3',1))#字符串替换,sub里面有四个参数,匹配规则,替换的内容,需要处理的字符串,替换的个数,没有写数字时默认全部都替换
com = re.compile('\d+')#规则,可以多次使用,规则已经确定了,拿需要匹配的字符串来匹配这个规则
com.findall('dasdasd81d9e9')
ret = re.finditer('\d','dasd1w378das87')#与findall一样,不过返回的是迭代器对象(next方法取值),用group()方法来取出
print(next(ret).group())
ret1 = re.findall('www\.(baidu|163)\.com','www.baidu.com')
print(ret1)#['baidu']
ret2 = re.findall('www\.(?:baidu|163)\.com','www.baidu.com')
print(ret2)#['www.baidu.com']

和json模块的功能类似,用来做数据交换,xml通过<>节点来区别数据结构

logging模块




Python3.x 标准模块库目录

1、文本

  1. string:通用字符串操作

  2. re:正则表达式操作

  3. difflib:差异计算工具

  4. textwrap:文本填充

  5. unicodedata:Unicode字符数据库

  6. stringprep:互联网字符串准备工具

  7. readline:GNU按行读取接口

  8. rlcompleter:GNU按行读取的实现函数

2、二进制数据

  1. struct:将字节解析为打包的二进制数据

  2. codecs:注册表与基类的编解码器

3、数据类型

  1. datetime:基于日期与时间工具

  2. calendar:通用月份函数

  3. collections:容器数据类型

  4. collections.abc:容器虚基类

  5. heapq:堆队列算法

  6. bisect:数组二分算法

  7. array:高效数值数组

  8. weakref:弱引用

  9. types:内置类型的动态创建与命名

  10. copy:浅拷贝与深拷贝

  11. pprint:格式化输出

  12. reprlib:交替repr()的实现

4、数学

  1. numbers:数值的虚基类

  2. math:数学函数

  3. cmath:复数的数学函数

  4. decimal:定点数与浮点数计算

  5. fractions:有理数

  6. random:生成伪随机数

5、函数式编程

  1. itertools:为高效循环生成迭代器

  2. functools:可调用对象上的高阶函数与操作

  3. operator:针对函数的标准操作

6、文件与目录

  1. os.path:通用路径名控制

  2. fileinput:从多输入流中遍历行

  3. stat:解释stat()的结果

  4. filecmp:文件与目录的比较函数

  5. tempfile:生成临时文件与目录

  6. glob:Unix风格路径名格式的扩展

  7. fnmatch:Unix风格路径名格式的比对

  8. linecache:文本行的随机存储

  9. shutil:高级文件操作

  10. macpath:Mac OS 9路径控制函数

7、持久化

  1. pickle:Python对象序列化

  2. copyreg:注册机对pickle的支持函数

  3. shelve:Python对象持久化

  4. marshal:内部Python对象序列化

  5. dbm:Unix“数据库”接口

  6. sqlite3:针对SQLite数据库的API 2.0

8、压缩

  1. zlib:兼容gzip的压缩

  2. gzip:对gzip文件的支持

  3. bz2:对bzip2压缩的支持

  4. lzma:使用LZMA算法的压缩

  5. zipfile:操作ZIP存档

  6. tarfile:读写tar存档文件

9、文件格式化

  1. csv:读写CSV文件

  2. configparser:配置文件解析器

  3. netrc:netrc文件处理器

  4. xdrlib:XDR数据编码与解码

  5. plistlib:生成和解析Mac OS X .plist文件

10、加密

  1. hashlib:安全散列与消息摘要

  2. hmac:针对消息认证的键散列

11、操作系统工具

  1. os:多方面的操作系统接口

  2. io:流核心工具

  3. time:时间的查询与转化

  4. argparser:命令行选项、参数和子命令的解析器

  5. optparser:命令行选项解析器

  6. getopt:C风格的命令行选项解析器

  7. logging:Python日志工具

  8. logging.config:日志配置

  9. logging.handlers:日志处理器

  10. getpass:简易密码输入

  11. curses:字符显示的终端处理

  12. curses.textpad:curses程序的文本输入域

  13. curses.ascii:ASCII字符集工具

  14. curses.panel:curses的控件栈扩展

  15. platform:访问底层平台认证数据

  16. errno:标准错误记号

  17. ctypes:Python外部函数库

12、并发

  1. threading:基于线程的并行

  2. multiprocessing:基于进程的并行

  3. concurrent:并发包

  4. concurrent.futures:启动并行任务

  5. subprocess:子进程管理

  6. sched:事件调度

  7. queue:同步队列

  8. select:等待I/O完成

  9. dummy_threading:threading模块的替代(当_thread不可用时)

  10. _thread:底层的线程API(threading基于其上)

  11. _dummy_thread:_thread模块的替代(当_thread不可用时)

13、进程间通信

  1. socket:底层网络接口

  2. ssl:socket对象的TLS/SSL填充器

  3. asyncore:异步套接字处理器

  4. asynchat:异步套接字命令/响应处理器

  5. signal:异步事务信号处理器

  6. mmap:内存映射文件支持

14、互联网

  1. email:邮件与MIME处理包

  2. json:JSON编码与解码

  3. mailcap:mailcap文件处理

  4. mailbox:多种格式控制邮箱

  5. mimetypes:文件名与MIME类型映射

  6. base64:RFC 3548:Base16、Base32、Base64编码

  7. binhex:binhex4文件编码与解码

  8. binascii:二进制码与ASCII码间的转化

  9. quopri:MIME quoted-printable数据的编码与解码

  10. uu:uuencode文件的编码与解码

15、HTML与XML

  1. html:HTML支持

  2. html.parser:简单HTML与XHTML解析器

  3. html.entities:HTML通用实体的定义

  4. xml:XML处理模块

  5. xml.etree.ElementTree:树形XML元素API

  6. xml.dom:XML DOM API

  7. xml.dom.minidom:XML DOM最小生成树

  8. xml.dom.pulldom:构建部分DOM树的支持

  9. xml.sax:SAX2解析的支持

  10. xml.sax.handler:SAX处理器基类

  11. xml.sax.saxutils:SAX工具

  12. xml.sax.xmlreader:SAX解析器接口

  13. xml.parsers.expat:运用Expat快速解析XML

16、互联网协议与支持

  1. webbrowser:简易Web浏览器控制器

  2. cgi:CGI支持

  3. cgitb:CGI脚本反向追踪管理器

  4. wsgiref:WSGI工具与引用实现

  5. urllib:URL处理模块

  6. urllib.request:打开URL连接的扩展库

  7. urllib.response:urllib模块的响应类

  8. urllib.parse:将URL解析成组件

  9. urllib.error:urllib.request引发的异常类

  10. urllib.robotparser:robots.txt的解析器

  11. http:HTTP模块

  12. http.client:HTTP协议客户端

  13. ftplib:FTP协议客户端

  14. poplib:POP协议客户端

  15. imaplib:IMAP4协议客户端

  16. nntplib:NNTP协议客户端

  17. smtplib:SMTP协议客户端

  18. smtpd:SMTP服务器

  19. telnetlib:Telnet客户端

  20. uuid:RFC4122的UUID对象

  21. socketserver:网络服务器框架

  22. http.server:HTTP服务器

  23. http.cookies:HTTPCookie状态管理器

  24. http.cookiejar:HTTP客户端的Cookie处理

  25. xmlrpc:XML-RPC服务器和客户端模块

  26. xmlrpc.client:XML-RPC客户端访问

  27. xmlrpc.server:XML-RPC服务器基础

  28. ipaddress:IPv4/IPv6控制库

17、多媒体

  1. audioop:处理原始音频数据

  2. aifc:读写AIFF和AIFC文件

  3. sunau:读写Sun AU文件

  4. wave:读写WAV文件

  5. chunk:读取IFF大文件

  6. colorsys:颜色系统间转化

  7. imghdr:指定图像类型

  8. sndhdr:指定声音文件类型

  9. ossaudiodev:访问兼容OSS的音频设备

18、国际化

  1. gettext:多语言的国际化服务

  2. locale:国际化服务

19、编程框架

  1. turtle:Turtle图形库

  2. cmd:基于行的命令解释器支持

  3. shlex:简单词典分析

20、Tk图形用户接口

  1. tkinter:Tcl/Tk接口

  2. tkinter.ttk:Tk主题控件

  3. tkinter.tix:Tk扩展控件

  4. tkinter.scrolledtext:滚轴文本控件

21、开发工具

  1. pydoc:文档生成器和在线帮助系统

  2. doctest:交互式Python示例

  3. unittest:单元测试框架

  4. unittest.mock:模拟对象库

  5. test:Python回归测试包

  6. test.support:Python测试工具套件

  7. venv:虚拟环境搭建

22、调试

  1. bdb:调试框架

  2. faulthandler:Python反向追踪库

  3. pdb:Python调试器

  4. timeit:小段代码执行时间测算

  5. trace:Python执行状态追踪

23、运行时

  1. sys:系统相关的参数与函数

  2. sysconfig:访问Python配置信息

  3. builtins:内置对象

  4. main:顶层脚本环境

  5. warnings:警告控制

  6. contextlib:with状态的上下文工具

  7. abc:虚基类

  8. atexit:出口处理器

  9. traceback:打印或读取一条栈的反向追踪

  10. future:未来状态定义

  11. gc:垃圾回收接口

  12. inspect:检查存活的对象

  13. site:址相关的配置钩子(hook)

  14. fpectl:浮点数异常控制

  15. distutils:生成和安装Python模块

24、解释器

  1. code:基类解释器

  2. codeop:编译Python代码

25、导入模块

  1. imp:访问import模块的内部

  2. zipimport:从ZIP归档中导入模块

  3. pkgutil:包扩展工具

  4. modulefinder:通过脚本查找模块

  5. runpy:定位并执行Python模块

  6. importlib:import的一种实施

26、Python语言

  1. parser:访问Python解析树

  2. ast:抽象句法树

  3. symtable:访问编译器符号表

  4. symbol:Python解析树中的常量

  5. token:Python解析树中的常量

  6. keyword:Python关键字测试

  7. tokenize:Python源文件分词

  8. tabnany:模糊缩进检测

  9. pyclbr:Python类浏览支持

  10. py_compile:编译Python源文件

  11. compileall:按字节编译Python库

  12. dis:Python字节码的反汇编器

  13. pickletools:序列化开发工具

27、其它

  1. formatter:通用格式化输出

28、Windows相关

  1. msilib:读写Windows Installer文件

  2. msvcrt:MS VC++ Runtime的有用程序

  3. winreg:Windows注册表访问

  4. winsound:Windows声音播放接口

29、Unix相关

  1. posix:最常用的POSIX调用

  2. pwd:密码数据库

  3. spwd:影子密码数据库

  4. grp:组数据库

  5. crypt:Unix密码验证

  6. termios:POSIX风格的tty控制

  7. tty:终端控制函数

  8. pty:伪终端工具

  9. fcntl:系统调用fcntl()和ioctl()

  10. pipes:shell管道接口

  11. resource:资源可用信息

  12. nis:Sun的NIS的接口

  13. syslog:Unix syslog程序库

本文转自:https://www.toutiao.com/a6611104093169517070/?tt_from=weixin&utm_campaign=client_share&wxshare_count=1&timestamp=1543192963&app=news_article&utm_source=weixin&iid=51711240216&utm_medium=toutiao_android&group_id=6611104093169517070

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值