Python 常用运维模块之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"))