Python 常用运维模块之Shutil 模块

Python 常用运维模块之Shutil 模块

Shutil 模块

shutil 模块提供了许多高级的文件操作功能,常用于文件和目录的复制、移动、删除等操作

使用 shutil 模块之前需要导入:

python 复制代码
import shutil

复制源文件到目标路径

shutil.copyfile() 用于复制文件内容
src 是源文件路径,dst 是目标文件路径

如果目标文件已存在,会被覆盖

python 复制代码
shutil.copyfile("source.txt", "destination.txt")

复制源文件权限到目标文件

shutil.copymode() 仅复制文件的权限模式,不复制文件内容

目标文件必须已存在

python 复制代码
shutil.copymode("source.txt", "destination.txt")

复制源文件的最近修改时间、权限等元信息到目标文件

shutil.copystat() 复制文件的权限、最近访问时间、最近修改时间等元信息

目标文件必须已存在

python 复制代码
shutil.copystat("source.txt", "destination.txt")

复制源文件到目标路径(包含文件名)

shutil.copy() 复制文件内容和权限,但不会复制其他元信息

如果目标路径是目录,则目标文件名与源文件名相同

python 复制代码
shutil.copy("source.txt", "/path/to/destination/")

复制源文件及相关元信息到目标路径

shutil.copy2()shutil.copy() 类似,但会额外复制文件的元信息(如修改时间等)

如果目标路径是目录,则目标文件名与源文件名相同

python 复制代码
shutil.copy2("source.txt", "/path/to/destination/")

移动文件或目录

shutil.move() 用于移动文件或目录

如果目标路径是目录,则目标文件名与源文件名相同

如果目标路径已存在文件,会被覆盖

python 复制代码
shutil.move("source.txt", "/path/to/destination/")

获取磁盘使用情况

shutil.disk_usage() 返回指定路径的磁盘使用情况,包括总容量、已用容量和剩余容量

返回值是一个 namedtuple ,包含 totalusedfree 属性

python 复制代码
usage = shutil.disk_usage("/")
print(f"Total: {usage.total / (1024**3):.2f} GB")
print(f"Used: {usage.used / (1024**3):.2f} GB")
print(f"Free: {usage.free / (1024**3):.2f} GB")

复制整个目录树

shutil.copytree() 用于递归复制整个目录树

目标目录必须不存在,否则会抛出 FileExistsError

python 复制代码
shutil.copytree("source_dir", "destination_dir")

获取可执行文件的路径

shutil.which() 用于查找系统中可执行文件的路径,类似于 Unixwhich 命令

如果找不到文件,返回 None

python 复制代码
print(shutil.which("python"))
相关推荐
IVEN_4 小时前
只会Python皮毛?深入理解这几点,轻松进阶全栈开发
python·全栈
Ray Liang5 小时前
用六边形架构与整洁架构对比是伪命题?
java·python·c#·架构设计
AI攻城狮6 小时前
如何给 AI Agent 做"断舍离":OpenClaw Session 自动清理实践
python
千寻girling6 小时前
一份不可多得的 《 Python 》语言教程
人工智能·后端·python
AI攻城狮9 小时前
用 Playwright 实现博客一键发布到稀土掘金
python·自动化运维
曲幽9 小时前
FastAPI分布式系统实战:拆解分布式系统中常见问题及解决方案
redis·python·fastapi·web·httpx·lock·asyncio
YuMiao10 小时前
gstatic连接问题导致Google Gemini / Studio页面乱码或图标缺失问题
服务器·网络协议
孟健1 天前
Karpathy 用 200 行纯 Python 从零实现 GPT:代码逐行解析
python
码路飞1 天前
写了个 AI 聊天页面,被 5 种流式格式折腾了一整天 😭
javascript·python