常用标准库

官方文档标准库列表:

https://docs.python.org/zh-cn/3.8/library/index.html

标准库:os

os库主要对目标和文件操作。

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

标准库:sys

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

标准库:platform

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

标准库:glob

glob库用于文件查找,支持通配符(*、?、[])

python
示例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命令

python
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

python
# 将字典类型转换为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库用于满足简单的时间处理,例如获 取当前时间戳、日期、时间、休眠。

python
示例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库用于处理更复杂的日期和时间。

提供以下几个类:

python
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、代理等。

python
from urllib import request 
res = request.urlopen("http://www.baidu.com")

res 是一个HTTPResponse类型的对象,包含以下方法和属性:

示例1:自定义用户代理

python
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:向接口提交用户数据

python
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是标志位 的修饰符,用于控制表达式匹配模式

python
import re  
s = "this is test string"
pattern = re.compile('this')
result = pattern.match(s)
print(result.group())

语法:re.match(pattern, string, flags=0)

python
import re 
s = "this is test string"
result = re.match('this', s)
print(result.group())

匹配成功后,result对象会增加一个group()方法,可 以用它来获取匹配结果