点赞 ➕ 评论 ➕ 收藏 == 养成三连好习惯
🍅 联系作者: 不吃西红柿
🍅 作者简介:CSDN 博客专家丨全站 Top 10🏆、HDZ 核心组成员、信息技术智库公号号主
🍅 简历模板、PPT 模板、学习资料、技术互助。关注我,都给你
很多人看西红柿的博客,花里胡哨的不知道从何学起,为了广大人民群众的根本利益,我决定写一个阅读指引,按照这个指引进行学习,多加练习,假以时日,势必能够……算了,还是看你自己能学多少以及能够坚持到哪里了。加油!少年!毕竟收藏 = 学会
| 学习路径指引(点击解锁) | 定位 | 适宜人群 |
|---|---|---|
| 全网最全丨 Python 快速入门专栏 | 入门级 | 没有语言基础,感兴趣的大学生 |
| 全网最黑丨 Python 黑科技专栏 | 黑科技级 | 有一定的基础,学以致用 |
| 大数据知识体系丨集锦专栏 | 工作/就业 | 大数据领域从业者,就业升职加薪 |
| 信息技术智库社区 | 吹水/互助 | 互联网相关人员,白嫖奖品丨官方活动 |
python标准库思维导图:

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 |
glob模块提供了一个函数用于从目录通配符搜索中生成文件列表:
- >>> import glob
- >>> glob.glob('*.py')
- ['primes.py', 'random.py', 'quote.py']
通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。
sys.argv
可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。
变量解释
len(sys.argv)-1 参数个数(减去文件名)
例如在命令行中执行 "python demo.py one two three" 后可以得到以下输出结果:
- >>> import sys
- >>> print(sys.argv)
- ['demo.py', 'one', 'two', 'three']
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 到 所含的小组号。 |
math模块为浮点运算提供了对底层C函数库的访问:
- >>> import math
- >>> math.cos(math.pi / 4)
- 0.70710678118654757
- >>> math.log(1024, 2)
- 10.0
在实际工作中,math标准库往往无法满足需求,我还需要扩展库:NumPy
NumPy(Numerical Python) 支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
有几个模块用于访问互联网以及处理网络通信协议。其中最简单的两个是用于处理从 urls 接收的数据的 urllib.request 以及用于发送电子邮件的 smtplib:
- import smtplib
- smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )
参数说明:
Python SMTP 对象使用 sendmail 方法发送邮件,语法如下:
SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
参数说明:
案例:
- #!/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: 无法发送邮件"
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)
以下模块直接支持通用的数据打包和压缩格式: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
有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。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 模块提供了针对更大代码块的时间度量工具。
开发高质量软件的方法之一是为每一个函数开发测试代码,并且在开发过程中经常进行测试
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 理论基础:全网最全丨 Python 快速入门专栏
🍇 Python 练习应用:全网最黑丨 Python 黑科技专栏