当前位置: 首页 > article >正文

Python 常用运维模块之Shutil 模块

Python 常用运维模块之Shutil 模块

    • Shutil 模块
      • 复制源文件到目标路径
      • 复制源文件权限到目标文件
      • 复制源文件的最近修改时间、权限等元信息到目标文件
      • 复制源文件到目标路径(包含文件名)
      • 复制源文件及相关元信息到目标路径
      • 移动文件或目录
      • 获取磁盘使用情况
      • 复制整个目录树
      • 获取可执行文件的路径

Shutil 模块

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

import shutil

复制源文件到目标路径

shutil.copyfile() 用于复制文件内容
src 是源文件路径,dst 是目标文件路径
如果目标文件已存在,会被覆盖

shutil.copyfile("source.txt", "destination.txt")

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

shutil.copymode() 仅复制文件的权限模式,不复制文件内容
目标文件必须已存在

shutil.copymode("source.txt", "destination.txt")

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

shutil.copystat() 复制文件的权限、最近访问时间、最近修改时间等元信息
目标文件必须已存在

shutil.copystat("source.txt", "destination.txt")

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

shutil.copy() 复制文件内容和权限,但不会复制其他元信息
如果目标路径是目录,则目标文件名与源文件名相同

shutil.copy("source.txt", "/path/to/destination/")

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

shutil.copy2()shutil.copy() 类似,但会额外复制文件的元信息(如修改时间等)
如果目标路径是目录,则目标文件名与源文件名相同

shutil.copy2("source.txt", "/path/to/destination/")

移动文件或目录

shutil.move() 用于移动文件或目录
如果目标路径是目录,则目标文件名与源文件名相同
如果目标路径已存在文件,会被覆盖

shutil.move("source.txt", "/path/to/destination/")

获取磁盘使用情况

shutil.disk_usage() 返回指定路径的磁盘使用情况,包括总容量、已用容量和剩余容量
返回值是一个 namedtuple,包含 totalusedfree 属性

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

shutil.copytree("source_dir", "destination_dir")

获取可执行文件的路径

shutil.which() 用于查找系统中可执行文件的路径,类似于 Unixwhich 命令
如果找不到文件,返回 None

print(shutil.which("python"))

http://www.kler.cn/a/519971.html

相关文章:

  • 深入MapReduce——计算模型设计
  • 动手学图神经网络(5):使用Cluster - GCN方法来扩展GNNs
  • SQL GROUP BY 详解
  • SOME/IP--协议英文原文讲解1
  • 99.17 金融难点通俗解释:归母净利润
  • 【Linux】IPC:匿名管道、命名管道、共享内存
  • 绝缘栅双极性晶体管(IGBT)
  • CF 339A.Helpful Maths(Java实现)
  • 证券量化交易选择合适的编程语言
  • LetsWave脑电数据简单ERP分析matlab(一)
  • Keras、TensorFlow、PyTorch框架对比及服务器配置揭秘
  • PID如何调试,如何配置P,I,D值,如何适配pwm的定时器配置,如何给小车配电源
  • Meta-CoT:通过元链式思考增强大型语言模型的推理能力
  • 铁路通信电源设备的安全维护
  • 机位:解锁摄影视角的多维度密码
  • 20250124 Flink 增量聚合 vs 全量聚合
  • 自定义命令执行器:C++中命令封装的深度探索(C/C++实现)
  • WebForms 表单
  • Linux系统中处理子进程的终止问题
  • LabVIEW橡胶动态特性测试系统
  • Python数据分析-Python语法基础,IPython和Jupyter-Notebooks(二)
  • MySQL回表详解:原理、优化与实践
  • 双指针专题算法:替换数字、链表相交、环形链表ii
  • 基于微信小程序的校园二手交易市场的设计与实现(LW+源码+讲解)
  • 大模型GUI系列论文阅读 DAY4续:《Large Language Model Agent for Fake News Detection》
  • 《边界感知的分而治之方法:基于扩散模型的无监督阴影去除解决方案》学习笔记