python常用标准库
1078字约4分钟
2024-09-29
常用标准库

官方文档标准库列表:
https://docs.python.org/zh-cn/3.8/library/index.html
标准库:os
os库主要对目标和文件操作。

os.path类用于获取文件属性。

标准库:sys
sys库用于与Python解释器交互。

标准库:platform
platform库用于获取操作系统详细信息。

标准库:glob
glob库用于文件查找,支持通配符(*、?、[])
示例1:查找目录中所有以.sh为后缀的文件: 
>>> glob.glob('/home/user/*.sh') 
['/home/user/b.sh', '/home/user/a.sh', '/home/user/sum.sh'] 
示例2:查找目录中出现单个字符并以.sh为后缀的文件: 
>>> glob.glob('/home/user/?.sh') 
['/home/user/b.sh', '/home/user/a.sh'] 
示例3:查找目录中出现a.sh或b.sh的文件: 
>>> glob.glob('/home/user/[a|b].sh') 
['/home/user/b.sh', '/home/user/a.sh']标准库:random
random库用于生成随机数。

标准库:subprocess
subprocess库用于执行Shell命令,工作时会fork一个子进程去执行任务,连接到子进程的标准输入、输出、错误,并获得 它们的返回代码。
这个模块将取代os.system、os.spawn*、os.popen*、popen2.和commands.。
subprocess的主要方法:
subprocess.run(),subprocess.Popen(),subprocess.call
语法:subprocess.run(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None)

示例:执行shell命令
import subprocess 
cmd = "pwd" 
result = subprocess.run(cmd, shell=True, timeout=3, stderr=subprocess.PIPE, stdout=subprocess.PIPE) 
print(result)
run方法返回CompletedProcess实例,可以直接从这个实例中获取命令运行结果: 
print(result.returncode) # 获取命令执行返回状态码 
print(result.stdout) # 命令执行标准输出 
print(result.stderr) # 命令执行错误输出标准库:json
JSON是一种轻量级数据交换格式,一般API返回的数据大多是 JSON、XML,如果返回JSON的话,需将获取的数据转换成字典, 方面在程序中处理。
json主要提供两种方法:
- dumps() 将python对象转为json对象 
- loads() 将json对象转为python对象 
应用场景:访问API

# 将字典类型转换为JSON对象 
import json 
computer = {"主机":5000,"显示器":1000,"鼠标":60,"键盘":150} 
json_obj = json.dumps(computer) 
print(type(json_obj)) 
print(json_obj) 
# 将JSON对象转换为字典 
import json 
data = json.loads(json_obj) 
print(type(data))标准库:time
time库用于满足简单的时间处理,例如获 取当前时间戳、日期、时间、休眠。

示例1:将当前时间转换为指定格式 
import time 
time.strftime("%Y-%m-%d %H:%M:%S") 
示例2:将时间戳转换指定格式 
now = time.time() 
struct_time = time.localtime(now) 
time.strftime('%Y-%m-%d %H:%M:%S',struct_time)标准库:datetime
datetime库用于处理更复杂的日期和时间。
提供以下几个类:

from datetime import date, datetime 
# 将当前系统时间转换指定格式 
date.strftime(datetime.now(), '%Y-%m-%d %H:%M:%S') 
# 获取当前系统日期 
date.today() 
# 将时间戳转换指定格式 
date_array = datetime.fromtimestamp(time.time()) 
date_array.strftime("%Y-%m-%d %H:%M:%S")
# 获取昨天日期 
from datetime import date, timedelta 
yesterday = date.today() - timedelta(days=1) 
print(yesterday) 
# 获取明天日期 
tomorrow = date.today() + timedelta(days=1)标准库:urllib
urllib库用于访问URL。
urllib包含以下类:
- urllib.request 打开和读取 URL 
- urllib.error 包含 urllib.request 抛出的异常 
- urllib.parse 用于解析 URL 
- urllib.robotparser 用于解析 robots.txt 文件 
用的最多是urllib.request 类,它定义了适用于在各种复杂情况下打开 URL,例如基本认证、重定向、Cookie、代理等。
from urllib import request 
res = request.urlopen("http://www.baidu.com")res 是一个HTTPResponse类型的对象,包含以下方法和属性:

示例1:自定义用户代理
from urllib import request 
url = "http://www.baidu.com" 
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36" 
header = {"User-Agent": user_agent} 
req = request.Request(url, headers=header) 
res = request.urlopen(req) 
print(res.getcode())示例2:向接口提交用户数据
from urllib import request, parse 
url = "http://www.baidu.com/login" 
post_data = {"username":"user1","password":"123456"} 
#将字典转为URL查询字符串格式,并转为bytes类型 
post_data = parse.urlencode(post_data).encode("utf8") 
req = request.Request(url, data=post_data, headers=header) 
res = request.urlopen(req) 
print(res.read())标准库:re
Python正则表达式主要由re标准库提供,基本上支持所有的正则表达式。

语法:re.compile(pattern, flags=0)
pattern 指的是正则表达式。flags是标志位 的修饰符,用于控制表达式匹配模式
import re  
s = "this is test string" 
pattern = re.compile('this') 
result = pattern.match(s) 
print(result.group())语法:re.match(pattern, string, flags=0)
import re 
s = "this is test string" 
result = re.match('this', s) 
print(result.group())匹配成功后,result对象会增加一个group()方法,可 以用它来获取匹配结果
