本文提到的所有标准库都是 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 三方库了,老的东西就不追了。

需要再查吧,累了~

评论




正在载入...
PoweredHexo
HostedAliyun
DNSAliyun
ThemeVolantis
UV
PV
BY-NC-SA 4.0