Python 常用运维模块之Shutil 模块
-
- [Shutil 模块](#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 ,包含 total 、used 和 free 属性
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() 用于查找系统中可执行文件的路径,类似于 Unix 的 which 命令
如果找不到文件,返回 None
python
print(shutil.which("python"))