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()方法,可 以用它来获取匹配结果