本文提到的所有标准库都是 python 默认自带的库,无需独立安装
模块 | 描述 |
---|---|
os | 操作系统管理 |
sys | 解释器交互 |
platform | 操作系统信息 |
glob | 查找文件 |
shutil | 文件管理 |
random | 随机数 |
subprocess | 执行 shell 命令 |
pickle | 对象数据持久化 |
json | JOSN编码和解码 |
time | 时间访问和转换 |
datetime | 日期和时间 |
urllib | HTTP访问 |
os
os库主要对目标和文件操作,通常用在 Linux 服务器较多
方法 | 描述 |
---|---|
os.name | 返回操作系统类型(nt:代表win,java代表java虚拟机,posix:代表linux/unix) |
os.envrion | 以字典形式获取当前系统变量,等同于linux系统的env命令,os.envrion[‘变量名’]获取指定变量值。 |
os.putenv(key, value) | 改变或添加环境变量 |
os.llistdir(path) | 列出指定目录下的文件和目录 |
os.getcwd() | 返回当前所在目录 |
os.chdir(path) | 切换目录 |
os.mkdir(path, mode=0777) | 创建目录 |
os.makedirs(path, mode=0777) | 递归创建目录 |
os.rmdir(path) | 删除目录 |
os.remove(file) | 删除文件 |
os.rename(old, new) | 重命名文件或目录 |
os.stat(file) | 返回文件属性 |
os.chown(path, uid, gid) | 修改目录或文件的属主属组 |
os.chmod(path, mode) | 修改目录或文件的访问权限 |
os.symlink(src, dst) | 软链 |
os.unlink(path) | 移除软链 |
os.getuid() | 返回当前进程uid |
os.getlogin() | 返回当前登录用户 |
os.getpid() | 返回当前进程id |
os.kill(pid, sig) | 发送信号给指定进程 |
os.walk(path) | 目录树生成器,(path, 目录名, 文件名) |
os.path
用于获取文件属性
方法 | 描述 |
---|---|
os.path.basename(path) | 返回最后一个目录或文件名 |
os.path.dirname(path) | 返回最后一个文件所属目录 |
os.path.abspath(path) | 返回一个绝对路径(补充当前所在路径) |
os.path.exists(path) | 判断路径是否存在 |
os.path.isdir(path) | 判断是否为目录 |
os.path.isfile(path) | 判断是否为文件 |
os.path.islink(path) | 判断是否为链接 |
os.path.ismount(path) | 判断是否挂载 |
os.path.getatime(file) | 返回文件访问时间戳 |
os.path.getctime(file) | 返回文件变化时间戳 |
os.path.getmtime(file) | 返回文件修改时间戳 |
os.path.getsize(file) | 返回文件大小,单位字节 |
os.path.join(a, *p) | 加入两个或两个以上的路径,以正斜杠”/“分隔,常用于拼接路径 |
os.path.split(path) | 分隔路径名 |
os.path.splitext(path) | 分隔扩展名 |
sys
常用语和 python 解释器交互
方法 | 描述 |
---|---|
sys.argv | 作为一个脚本需要传参的时候,该函数用于获取传入的参数,类比 shell 的$1,$2,$3。当然$0也一样 argv[0]=$0 argv[1]=$1 argv[2]=$2 |
sys.exit() | 退出 python 解释器,也就是退出 py 脚本了 |
sys.path | 当前 python 解释器查找模块搜索的路径,列表返回 |
sys.platform | 返回当前系统,linux或win32 |
sys.version | 返回 python 版本 |
sys.getdefaultcoding() | 返回当前系统编码 |
platform
用于获取操作系统详细信息
方法 | 描述 |
---|---|
platform.platform() | 返回操作系统平台 |
platform.uname() | 返回操作系统信息 |
platform.system() | 返回操作系统类型 |
platform.version() | 返回操作系统版本 |
platform.machine() | 返回计算机类型 |
platform.processor() | 返回计算机处理器类型 |
platform.node() | 返回操作系统名 |
platform.python_version() | 返回当前 python 解释器版本 |
glob
用于文件查找,支持通配符(*/?/[ ]),类似 linux 中 find
命令
# 查找当前目录以sh结尾的文件
glob.glob("./*.sh")
# 找到a.sh或b.sh
glob.glob("[a|b].sh")
random
用于生成随机数
方法 | 描述 |
---|---|
random.randint(start, stop) | 返回start-stop之间的任意一个数字,返回的数字包括结束值 |
random.random() | 返回一个0-1以内的浮点数 |
random.randrange(start, stop, step) | 返回start-stop之间的整数,step可设置间隔,返回的随机数不包括结束值 |
random.sample(array, x) | 从数组中返回x个随机元素 |
random.choice() | 从序列中返回一个元素 |
subprocess
主要用于 linux 系统,用于执行 shell 命令,执行时会 fork 一个子进程去执行任务,连接到子进程的标准输入、输出、错误,并获得它们的返回码。
主要核心的几个方法是 subprocess.run()
,语法如下:
subprocess.run(args, *, stdin=None, stdout=None, stderr=None, shell=False, cwd=None, timeout=None, check=False, encoding=None)
参数 | 描述 |
---|---|
args | 需要执行的 shell 命令,如需要携带参数时”ls -l”,shell 的值必须为 True |
stdin stdout stderr |
run()函数默认不会获取命令的正常输出和错误,可以设置 stdout=subprocess.PIPE, stderr=subprocess.PIPE 来从子进程获取响应内容,也可以设置 stderr=STDOUT 使标准错误通过标准输出流输出,类似 shell 中的 2>1 |
shell | 如果 shell 为 True,指定的命令将通过 shell 执行 |
cwd | 改变当前工作目录 |
timeout | 设置命令超时时间 |
check | 如果 check 为 True,且执行命令的进程以非 0 状态退出(returncode为进程退出状态码),则会抛出 CalledProcessError 的异常,且该异常对象会包含参数、状态码,以及 stdout 和 stderr(如果它们被捕获的话) |
encoding | 如果指定了该参数,则 stdin、stdout、stderr 可以接收字符串数据,并以该编码方式编码,否则只接受 bytes 类型的数据 |
示例:
import subprocess
cmd = "ls -l"
result = subprocess.run(cmd, shell=True, timeout=3, stderr=subprocess.PIPE, stdout=subprocess.PIPE, encoding="utf-8")
print(result.stdout)
print(result.stderr)
pickle
实现对一个python对象结构的二进制序列化和反序列化,主要用于将对象持久化到文件存储。
主要使用两个函数:
dump():把对象保存到文件中(序列化),使用
load()
函数从文件中读取(反序列化)dumps():把对象保存到内存中,使用
loads()
函数读取
import pickle
# 序列化
computer = {"主板": 2000, "cpu": 3000, "显示器": 2000, "鼠标": 100, "键盘": 150}
with open('/pickle.pkl', 'wb') as f:
# wb表示使用二进制形式写入,使用pickle必须使用b
pickle.dump(computer, f)
序列化后的文件无法直接打开,因为是二进制数据,还需要使用反序列化打开查看内容
# 反序列化
with open('/pickle.pkl', 'rb') as f:
computer = pickle.load(f)
print(computer)
json
JSON 是一种轻量化的数据格式,一般 API 返回的数据大多是 JSON、XML,如果返回 JSON 的话,需将获取的数据转换为字典,方便在程序中处理。
json 和 pickle 有相似的接口,主要提供两种方法:
dumps():对数据进行编码
loads():对数据进行解码
import json
# 将字典转换为json数据
computer = {"主板": 2000, "cpu": 3000, "显示器": 2000, "鼠标": 100, "键盘": 150}
json_result = json.dumps(computer)
print(json_result)
# 将json数据转换为字典
dict_result = json.loads(json_result)
print(dict_result)
time
用于满足简单时间的处理,例如获取当前时间戳、日期、时间、休眠。
方法 | 描述 |
---|---|
time.ctime() | 返回当前时间,’Wed Nov 22 21:55:07 2023’ |
time.localtime() | 当前时间,以 stuct_time 时间类型返回 time.struct_time(tm_year=2023, tm_mon=11, tm_mday=22, tm_hour=21, tm_min=56, tm_sec=39, tm_wday=2, tm_yday=326, tm_isdst=0) |
time.mktime() | 将一个 stuct_time 时间类型转换成时间戳 |
time.sleep() | 使程序休眠的时间,单位秒 |
time.time() | 返回当前时间时间戳 |
time.strftime() | 将元组时间转换成指定格式。time.strftime("%Y-%m-%d %H:%M:%S") |
datetime
用于较复杂的时间日期的处理,提供了一下几个类:
类 | 描述 |
---|---|
datetime.date() | 日期,年月日组成 |
datetime.datetime() | 包括日期和时间 |
datetime.time() | 时间,时分秒及微秒 |
datetime.timedelta() | 时间间隔 |
datetime.tzinfo() | 时区信息对象 |
示例:
from datetime import date, datetime
# 获取当前时间,并按指定格式输出
print(date.strftime(datetime.now(), '%Y-%m'))
# 获取当前系统的当天日期
print(date.isoformat(date.today()))
from datetime import date, timedelta
# 获取昨天的日期
yesterday = date.today() - timedelta(days=1)
print(yesterday)
# 获取明天的日期
tommorrw = date.today() + timedelta(days=1)
print(tommorrw)
urllib
这个库就不看了吧,现在都用 requests
三方库了,老的东西就不追了。
需要再查吧,累了~