23 Python的shutil模块

news/2024/11/29 8:45:23/

概述

        在上一节,我们介绍了Python的argparse模块,包括:argparse模块中一些常用的类和函数。在这一节,我们将介绍Python的shutil模块。shutil模块是一个用于文件和文件夹操作的实用模块,它提供了一组用于处理文件和文件夹的高级接口,包括:文件和文件夹的复制、删除、移动、重命名等操作。shutil模块是Python标准库中的一部分,因此无需安装任何第三方库即可直接使用。

        下面,我们将逐一介绍shutil模块中一些常用的函数。

shutil.copy(src, dst)函数

        shutil.copy(src, dst)函数用于复制文件src到dst。如果目标文件已存在,则覆盖它。这个函数只会复制文件的内容,不会复制文件的元数据,比如:修改时间、访问权限等。如果需要完整地复制文件,则应该使用下面的shutil.copy2函数。

import shutil# 复制文件
shutil.copy('path_to_src_file', 'path_to_dest_dir')

        上面的示例代码会将"path_to_src_file"文件复制到"path_to_dest_dir"目录。如果目标目录不存在,则shutil.copy函数会抛出一个异常。

shutil.copy2(src, dst)函数

        shutil.copy2(src, dst)函数用于复制文件src到dst,同时保留原始文件的元数据,比如:修改时间、访问权限等。如果目标文件已存在,则覆盖它。

import shutil# 复制文件
shutil.copy2('path_to_src_file', 'path_to_dest_dir')

shutil.copytree(src, dst)函数

        shutil.copytree(src, dst)函数用于递归地复制文件夹src到dst。与shutil.copy和shutil.copy2不同,shutil.copytree可以复制整个目录树,而不仅仅是单个文件。如果目标目录不存在,shutil.copytree会创建它。如果目标目录已经存在,shutil.copytree会抛出一个异常。

import shutil# 复制文件夹
shutil.copytree('path_to_src_dir', 'path_to_dest_dir')

shutil.rmtree(path)函数

        shutil.rmtree(path)函数用于递归地删除文件夹path及其内容。如果文件夹不存在,则抛出异常。与os.rmdir 不同,shutil.rmtree可以删除一个包含文件和子目录的目录树。如果目录树中存在任何文件或子目录,os.rmdir会抛出一个异常。

import shutil# 删除文件夹
shutil.rmtree('path_to_dir')

shutil.move(src, dst)函数

        shutil.move(src, dst)函数用于将文件或文件夹src移动到dst。如果目标位置已存在同名文件或文件夹,则覆盖它。

import shutil# 将文件移动到另一个目录
shutil.move('path_to_src_file', 'path_to_dest_dir')

shutil.make_archive函数

        shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=False, owner=None, group=None, logger=None)函数用于创建一个压缩文件,返回其名称。其各个参数的具体含义如下。

        base_name:要创建的归档文件的基本名称,可以包含路径。

        format:归档文件的格式,比如:'zip'、'tar'、'gztar' 等。

        root_dir:要归档的目录树的根目录。如果未指定,则使用当前目录。

        base_dir:相对于root_dir的基准目录,用于确定要归档的文件。如果未指定,则使用root_dir。

        verbose:日志记录级别,0表示不记录,大于0表示记录。

        dry_run:如果为True,则只打印要执行的操作,而不实际执行。

        owner、group:归档文件的用户和组,仅在Unix系统上有效。

        logger:用于记录日志的logger对象。

import shutil# 创建一个名为archive.zip的zip归档文件,包含path_to_dir目录下的所有文件和子目录  
shutil.make_archive('archive', 'zip', 'path_to_dir')

shutil.unpack_archive函数

        shutil.unpack_archive(filename, extract_dir, format=None)函数用于解压缩给定的压缩文件到指定的目录。其各个参数的具体含义如下。

        filename:要解压缩的归档文件的路径。

        extract_dir:解压缩的目标目录。

        format:归档文件的格式,比如:'zip'、'tar'、'gztar' 等。如果未指定,则根据文件名自动检测。

        pwd:用于解压缩加密归档文件的密码。

import shutil# 解压缩名为archive.zip的归档文件到path_to_dir目录
shutil.unpack_archive('archive.zip', 'path_to_dir')

shutil.disk_usage(path)函数

        shutil.disk_usage(path)函数用于返回指定路径的磁盘使用情况。这个函数会返回一个元组,包含三个属性:指定路径的总磁盘空间(total)、指定路径中被占用的磁盘空间(used)、指定路径中未被占用的磁盘空间(free),都以字节数为单位进行表示。

import shutilinfo = shutil.disk_usage('./')
# 输出:usage(total=268436500480, used=36055289856, free=232381210624)
print(info)


http://www.ppmy.cn/news/1129275.html

相关文章

【青书学堂】 2023年第二学期 Bootstrap 前端界面框架技术(高起专) 作业

【青书学堂】 2023年第二学期 Bootstrap 前端界面框架技术(高起专) 作业 为了方便日后复习,青书学堂成人大专试题整理。 若有未整理的课程,请私信我补充,欢迎爱学习的同学们收藏点赞关注!文章内容仅限学习使用!&#x…

图像处理与计算机视觉--第五章-图像分割-霍夫变换

文章目录 1.霍夫变换(Hough Transform)原理介绍2.霍夫变换(Hough Transform)算法流程3.霍夫变换(Hough Transform)算法代码4.霍夫变换(Hough Transform)算法效果 1.霍夫变换(Hough Transform)原理介绍 Hough Transform是一种常用的计算机视觉图形检验方法,霍夫变换一…

mysql数据的备份和恢复

听歌 沛公 第一个欧,听的是沛公,唱的岂不是你我 文章目录 备份全量备份增量备份差异备份 mysql备份备份所有数据库备份制定的数据库备份多张表备份表结构备份表数据 恢复恢复所有数据 对应上面的第一个和第二个恢复表恢复表结构恢复表数据 备份 全量备份…

MySql的索引与算法-B+树索引

作者:逍遥Sean 简介:一个主修Java的Web网站\游戏服务器后端开发者 主页:https://blog.csdn.net/Ureliable 觉得博主文章不错的话,可以三连支持一下~ 如有需要我的支持,请私信或评论留言! 前言 索引在实际应…

springboot导入excel(POI)

POI官方文档 引入依赖 <!--POI--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.1.2</version></dependency><dependency><groupId>org.apache.poi</groupId&…

P2466 [SDOI2008] Sue 的小球(区间dp)

P2466 [SDOI2008] Sue 的小球&#xff08;区间dp&#xff09; 链接&#xff1a;P2466 [SDOI2008] Sue 的小球 很有意思的一道题&#xff0c;想各种方法都无从下手&#xff0c;看了洛谷题解瞬间懂了。 题意 有 n n n 个物品&#xff0c;每个物品的位置在 x i x_i xi​&…

【每日一题Day340】LC2251花期内花的数目 | 差分+哈希表+排序 排序+二分查找

花期内花的数目【LC2251】 给你一个下标从 0 开始的二维整数数组 flowers &#xff0c;其中 flowers[i] [starti, endi] 表示第 i 朵花的 花期 从 starti 到 endi &#xff08;都 包含&#xff09;。同时给你一个下标从 0 开始大小为 n 的整数数组 people &#xff0c;people[…

React useRequest解读

源码结构&#xff1a; 可以看到虽然是一个hooks&#xff08;具有一定功能且具备状态的单一函数&#xff09; 但是各种文件功能分得也是很细的&#xff0c;方便抽离和复用 useRequest.ts 抽离的原则还是单一功能原则 可以看出 真正的hooks实现是在Implement里 对于类型type的引…