从零开始学习人工智能Day6-Python3标准库概览
二、Python3基础语法学习
三、Python3 基本数据类型
四、Python3 数据类型转换
五、Python3 运算符
六、python基本数据类型(续)
七、Python3 控制语句
八、Python推导式
九、Python3 函数
十、Python3 数据结构
十一、Python3 模块
十二、Python3 输入和输出
十三、Python3标准库概览
Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。
以下是一些 Python3 标准库中的模块:
-
os 模块:os 模块提供了许多与操作系统交互的函数,例如创建、移动和删除文件和目录,以及访问环境变量等。
-
sys 模块:sys 模块提供了与 Python 解释器和系统相关的功能,例如解释器的版本和路径,以及与 stdin、stdout 和 stderr 相关的信息。
-
time 模块:time 模块提供了处理时间的函数,例如获取当前时间、格式化日期和时间、计时等。
-
datetime 模块:datetime 模块提供了更高级的日期和时间处理函数,例如处理时区、计算时间差、计算日期差等。
-
random 模块:random 模块提供了生成随机数的函数,例如生成随机整数、浮点数、序列等。
-
math 模块:math 模块提供了数学函数,例如三角函数、对数函数、指数函数、常数等。
-
re 模块:re 模块提供了正则表达式处理函数,可以用于文本搜索、替换、分割等。
-
json 模块:json 模块提供了 JSON 编码和解码函数,可以将 Python 对象转换为 JSON 格式,并从 JSON 格式中解析出 Python 对象。
-
urllib 模块:urllib 模块提供了访问网页和处理 URL 的功能,包括下载文件、发送 POST 请求、处理 cookies 等。
1.操作系统接口
os 模块提供了不少与操作系统相关联的函数,例如文件和目录的操作
#os模块
import os#获取当前目录
print(os.getcwd())#获取当前目录下的文件列表
print(os.listdir())
#输出:D:\桌面\pythonProject
# ['.idea', 'data.pkl',
# 'Day1_python3基本语法.py',
# 'Day1_python基本数据变量.py',
# 'Day2_Python3 数据类型转换.py',
# 'Day2_Python3 运算符.py',
# 'Day2_元组tuple&字典dictionary.py',
# 'Day2_列表List.py',
# 'Day2_字符串.py',
# 'Day2_数字Number.py',
# 'Day2_集合set.py',
# 'Day3_控制语句.py',
# 'Day3_推导式.py',
# 'Day4_函数.py',
# 'Day4_数据结构.py',
# 'Day5_模块.py',
# 'Day5_模块support.py',
# 'Day5_输入输出.py',
# 'Day6_python标准库.py',
# 'test.txt', '__pycache__']
针对日常的文件和目录管理任务,:mod:shutil 模块提供了一个易于使用的高级接口:
import shutil
#复制文件
shutil.copy('test.txt', 'test2.txt')#移动文件
# 当前工作目录下的文件test2.txt移动到test3.txt。
# 如果test3.txt已经存在,那么源文件test2.txt将覆盖test3.txt;
# 如果test3.txt不存在,那么源文件将被重命名为test3.txt并保留在当前目录中。
# 如果目标路径是一个不同的目录,文件会被移动到该目录下,文件名不变。
shutil.move('test2.txt', 'test3.txt')
2.文件通配符
glob 模块提供了一个函数用于从目录通配符搜索中生成文件列表:
import glob
#查找当前目录下所有以.txt结尾的文件
print(glob.glob('*.txt'))
#输出:['test.txt', 'test3.txt']
3.命令行参数
通用工具脚本经常调用命令行参数。这些命令行参数以链表形式存储于 sys 模块的 argv 变量。
import sys
print (sys.argv)
#输出:['D:\\桌面\\pythonProject\\Day6_python标准库.py']
4.字符串正则匹配
re 模块为高级字符串处理提供了正则表达式工具。对于复杂的匹配和处理,正则表达式提供了简洁、优化的解决方案:
import re
#匹配字符串
print(re.match('hello', 'hello world'))
#输出:<re.Match object; span=(0, 5), match='hello'>#第一个参数r'\bf[a-z]*'是一个正则表达式模式。
# r表示原始字符串(raw string),在正则表达式中使用原始字符串可以避免转义字符的问题。
# \b是单词边界(word boundary)锚点,表示匹配一个单词的开始或结束位置。
# f表示匹配字符f。
# [a-z]*表示匹配零个或多个小写字母a到z中的任何一个。
# \bf[a-z]*的目的是匹配所有以f开头,后跟零个或多个小写字母的单词。
print(re.findall(r'\bf[a-z]*', 'which foot or hand fell fastest'))
#输出:['foot', 'fell', 'fastest']# r 前缀表示原始字符串,这样反斜杠 \ 就不会被视为转义符。
# (\b[a-z]+):这是一个捕获组。
# \b 是单词边界,表示匹配一个单词的开始或结束位置。
# [a-z]+ 匹配一个或多个小写字母。
# 整个捕获组 (\b[a-z]+) 匹配一个由小写字母组成的单词。
# \1:这是对第一个捕获组的引用,即引用刚才匹配到的单词。
# 因此,整个正则表达式模式 r'(\b[a-z]+) \1' 匹配两个连续的相同单词,中间由一个空格分隔。# 替换字符串 r'\1':
# \1 表示引用第一个捕获组的内容。
# 这意味着匹配到的两个连续的相同单词会被替换为一个相同的单词。
print(re.sub(r'(\b[a-z]+) \1', r'\1', 'cat in the the hat'))
#输出:'cat in the hat'
如果只需要简单的功能,应该首先考虑字符串方法,因为它们非常简单,易于阅读和调试:
print("all for you! ".replace("all", "one"))
5.数学
import math
print(math.sqrt(25))
print(math.pi)
print(math.log10(10))
random 提供了生成随机数的工具。
import random
print(random.randint(1, 10)) # 随机生成一个1到10之间的整数
print(random.random()) # 随机生成一个0到1之间的浮点数
print(random.choice(['apple', 'banana', 'orange'])) # 随机从列表中选择一个元素
print(random.sample(range(10), 5)) # 从range(10)中随机选择5个不重复的元素
print(random.randrange(1, 10, 2)) # 从1到10中随机选择一个偶数
6.访问 互联网
from urllib.request import urlopen# 从指定的
# URL ("http://www.python.org")下载网页内容,并将其存储在html
# 可以用于进一步的处理,比如解析网页内容、搜索特定信息等。需要注意的是,直接使用.read()
# 方法读取内容会返回字节字符串(bytestring),
# 如果需要进行字符串操作(如查找、替换等),可能需要将其转换为普通字符串(str)。
html = urlopen("http://www.python.org").read()
print(html.decode())
print(html)
7.日期和时间
datetime 模块为日期和时间处理同时提供了简单和复杂的方法。
支持日期和时间算法的同时,实现的重点放在更有效的处理和格式化输出。
import datetime
now = datetime.datetime.now() # 获取当前日期和时间
print(now) # 输出:2025-05-06 14:20:46.465643curdate = datetime.date.today() # 获取当前日期
print(curdate) # 输出:2025-05-06format_date = now.strftime("%Y-%m-%d %H:%M:%S") # 格式化日期
print(format_date) # 输出:2025-05-06 14:21:14
8.数据压缩
以下模块直接支持通用的数据打包和压缩格式:zlib,gzip,bz2,zipfile,以及 tarfile。
import zlib
s = b'witch which has which witches wrist watch'
print(len(s)) # 输出:41# 使用 zlib 压缩字符串
compressed = zlib.compress(s)
print(compressed)
# 输出:b'x\x9c\xcbH\xcd\xc9\xc9W(\xcf/\xcaIQ\xcc\x04\x00\x1b\x11\x02\x00\x00\x00'
print(len(compressed)) # 输出:37decompressed = zlib.decompress(compressed)
print(decompressed) # 输出:b'witch which has which witches wrist watch'
print(len(decompressed)) # 输出:41
9.性能度量
有些用户对了解解决同一问题的不同方法之间的性能差异很感兴趣。Python 提供了一个度量工具,为这些问题提供了直接答案。
例如,使用元组封装和拆封来交换元素看起来要比使用传统的方法要诱人的多,timeit 证明了现代的方法更快一些。
from timeit import Timer
print(Timer('t=a;a=b;b=t','a=1;b=2').timeit() )
#输出 0.022778599999583093print(Timer('a,b=b,a','a=1;b=2').timeit())
#输出 0.021984099999826867
参考:Python3 标准库概览 | 菜鸟教程