《Python 快速入门》C站最全Python标准库总结

《Python 快速入门》C站最全Python标准库总结❤粉丝福利:免费下载海量【PPT模板、简历模板、学习资料】

大家好,又见面了,我是你们的朋友全栈君。

点赞评论收藏 == 养成三连好习惯

? 联系作者 不吃西红柿 

? 作者简介:CSDN 博客专家丨全站 Top 10?、HDZ 核心组成员、信息技术智库公号号主

? 简历模板、PPT 模板、学习资料、技术互助。关注我,都给你

很多人看西红柿的博客,花里胡哨的不知道从何学起,为了广大人民群众的根本利益,我决定写一个阅读指引,按照这个指引进行学习,多加练习,假以时日,势必能够……算了,还是看你自己能学多少以及能够坚持到哪里了。加油!少年!毕竟收藏 = 学会

学习路径指引(点击解锁) 定位 适宜人群
全网最全丨 Python 快速入门专栏 入门级 没有语言基础,感兴趣的大学生
全网最黑丨 Python 黑科技专栏 黑科技级 有一定的基础,学以致用
大数据知识体系丨集锦专栏 工作/就业 大数据领域从业者,就业升职加薪
信息技术智库社区 吹水/互助 互联网相关人员,白嫖奖品丨官方活动

python标准库思维导图:

《Python 快速入门》C站最全Python标准库总结

1、操作系统接口

os模块提供了不少与操作系统相关联的函数。

>>> import os
>>> os.getcwd()      # 返回当前的工作目录
'C:\\Python34'
>>> os.chdir('/server/accesslogs')   # 修改当前的工作目录
>>> os.system('mkdir today')   # 执行系统命令 mkdir 
0

建议使用 “import os” 风格而非 “from os import *”。这样可以保证随操作系统不同而有所变化的 os.open() 不会覆盖内置函数 open()。

os常用命令

序号 方法 功能
1 os.access(path, mode)   检验权限模式
2 os.chdir(path)    改变当前工作目录
3 os.chflags(path, flags)   设置路径的标记为数字标记。
4 os.chmod(path, mode)     更改权限
5 os.chown(path, uid, gid)   更改文件所有者
6 os.chroot(path)    改变当前进程的根目录
7 os.close(fd)     关闭文件描述符 fd
8 os.closerange(fd_low, fd_high)     关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略
9 os.dup(fd)     复制文件描述符 fd
10 os.dup2(fd, fd2)     将一个文件描述符 fd 复制到另一个 fd2

2、文件通配符

glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:

>>> import glob
>>> glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']

3、命令行参数

通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。

sys.argv
可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
变量解释

  • sys.argv[0]当前程序名
  • sys.argv[1]第一个参数
  • sys.argv[2]第二个参数

len(sys.argv)-1 参数个数(减去文件名)

例如在命令行中执行 “python demo.py one two three” 后可以得到以下输出结果:

>>> import sys
>>> print(sys.argv)
['demo.py', 'one', 'two', 'three']

4、字符串正则匹配

re模块为高级字符串处理提供了正则表达式工具。可以说是爬虫必备,对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试:

>>> 'tea for too'.replace('too', 'two')
'tea for two'

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

函数语法

re.match(pattern, string, flags=0)

函数参数说明:

参数 描述
pattern 匹配的正则表达式
string 要匹配的字符串。
flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。

匹配成功re.match方法返回一个匹配的对象,否则返回None。

我们可以使用group(num) 或 groups() 匹配对象函数来获取匹配表达式。

匹配对象方法 描述
group(num=0) 匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。
groups() 返回一个包含所有小组字符串的元组,从 1 到 所含的小组号。

5、数学计算

math模块为浮点运算提供了对底层C函数库的访问:

>>> import math
>>> math.cos(math.pi / 4)
0.70710678118654757
>>> math.log(1024, 2)
10.0

在实际工作中,math标准库往往无法满足需求,我还需要扩展库:NumPy

NumPy(Numerical Python) 支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。


6、发送邮件

有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:

import smtplib
smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

参数说明

  • host: SMTP 服务器主机。 你可以指定主机的ip地址或者域名如: runoob.com,这个是可选参数。
  • port: 如果你提供了 host 参数, 你需要指定 SMTP 服务使用的端口号,一般情况下 SMTP 端口号为25。
  • local_hostname: 如果 SMTP 在你的本机上,你只需要指定服务器地址为 localhost 即可。

Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])

参数说明

  • from_addr: 邮件发送者地址。
  • to_addrs: 字符串列表,邮件发送地址。
  • msg: 发送消息

案例:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
import smtplib
from email.mime.text import MIMEText
from email.header import Header
 
sender = 'from@runoob.com'
receivers = ['429240967@qq.com']  # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
 
# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码
message = MIMEText('Python 邮件发送测试...', 'plain', 'utf-8')
message['From'] = Header("菜鸟教程", 'utf-8')   # 发送者
message['To'] =  Header("测试", 'utf-8')        # 接收者
 
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')
 
 
try:
    smtpObj = smtplib.SMTP('localhost')
    smtpObj.sendmail(sender, receivers, message.as_string())
    print "邮件发送成功"
except smtplib.SMTPException:
    print "Error: 无法发送邮件"

7、日期和时间

datetime模块为日期和时间处理同时提供了简单和复杂的方法。

支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。

该模块还支持时区处理:

>>> # dates are easily constructed and formatted
>>> from datetime import date
>>> now = date.today()
>>> now
datetime.date(2003, 12, 2)
>>> now.strftime("%m-%d-%y. %d %b %Y is a %A on the %d day of %B.")
'12-02-03. 02 Dec 2003 is a Tuesday on the 02 day of December.'

时间的三种存在方式:时间对象,时间字符串,时间戳。

(1)字符串转datetime:

>>> string = '2014-01-08 11:59:58'
>>> time1 = datetime.datetime.strptime(string,'%Y-%m-%d %H:%M:%S')
>>> print time1
2014-01-08 11:59:58

(2)datetime转字符串:

>>> time1_str = datetime.datetime.strftime(time1,'%Y-%m-%d %H:%M:%S')
>>> time1_str
'2014-01-08 11:59:58'

(3)时间戳转时间对象:

>>>time1 = time.localtime()
>>>time1_str = datetime.datetime.fromtimestamp(time1)

8、数据压缩

以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。

>>> import zlib
>>> s = b'witch which has which witches wrist watch'
>>> len(s)
41
>>> t = zlib.compress(s)
>>> len(t)
37
>>> zlib.decompress(t)
b'witch which has which witches wrist watch'
>>> zlib.crc32(s)
226805979

9、性能度量

有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。

例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。

>>> from timeit import Timer
>>> Timer('t=a; a=b; b=t', 'a=1; b=2').timeit()
0.57535828626024577
>>> Timer('a,b = b,a', 'a=1; b=2').timeit()
0.54962537085770791

相对于 timeit 的细粒度,:mod:profile 和 pstats 模块提供了针对更大代码块的时间度量工具。


10、测试模块

开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试

doctest模块提供了一个工具,扫描模块并根据程序中内嵌的文档字符串执行测试。

测试构造如同简单的将它的输出结果剪切并粘贴到文档字符串中。

通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致:

def average(values):
    """Computes the arithmetic mean of a list of numbers.

    >>> print(average([20, 30, 70]))
    40.0
    """
    return sum(values) / len(values)

import doctest
doctest.testmod()   # 自动验证嵌入测试

《Python 快速入门》C站最全Python标准库总结

 ❤ 每周福利丨送 8 本正版图书 ❤

? 抽奖规则:每周 5 程序开奖,双奖池制(粉丝池 + 奖品池)

? 奖品清单:至少 8 本正版图书,不定期:CSDN 水杯、背包、日历..

? Python 理论基础:全网最全丨 Python 快速入门专栏

? Python 练习应用:全网最黑丨 Python 黑科技专栏

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/143144.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 探索Qi协议「建议收藏」

    探索Qi协议「建议收藏」Qi是WPC推出的无线充电协议,面向手机和其他便携移动设备。

  • My安装EclipseJS代码提示(Spket插件)

    My安装EclipseJS代码提示(Spket插件)

    2021年11月14日
  • 三菱PLC FB块的创建与使用

    三菱PLC FB块的创建与使用三菱PLCFB块的创建与使用在PLC编写程序过程中经常遇到一些重复逻辑控制的梯形图,比如流水线控制,气缸报警等等,这时候可以使用FB块来便捷编程,减少工作量与出错率。本例创建一个简单的单控气缸异常报警的FB块。所需输入有:气缸输出,气缸工作位,气缸原位,复位。所需输出有:工作位异常,原位异常。1,创建FB块:鼠标右击FB管理:选择新建数据:填写数据名并确认:2,编辑局部标签:其中INPUT为输入,OUTPUT为输出。3,编辑F…

  • C语言背包问题

    C语言背包问题0/1背包问题一个旅行者有一个最多能装MM公斤的背包,现在有nn件物品,它们的重量分别是W1,W2,…,WnW1,W2,…,Wn,它们的价值分别为C1,C2,…,CnC1,C2,…,Cn,求旅行者能获得最大总价值。【输入】第一行:两个整数,MM(背包容量,M<=200M<=200)和NN(物品数量,N<=30N<=30);第2..N+12..N+1行:每行二个整数Wi,CiWi,Ci,表示每个物品的重量和价值。【输出】仅一行…

  • 分享二个.net开源的论坛

    分享二个.net开源的论坛http://www.jinhusns.com/Products/Downloadhttp://www.jinhusns.com/Document/FrameworkDocument/

  • jQuery validationEngine自定义提醒

    jQuery validationEngine自定义提醒在网上看了好多自定义验证样式,好多都是不是自己想要的!打开源码,看了一下挺简单的!将下面的样式添加到页面上就可以实现黑色主题的提醒!想要什么样式基本都可以自己修改了!很方便/*验证样式*/.formError.formErrorContent{ width:100%; /*错误提示框颜色*/ background:#000; position:rela

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号