Python 进阶(七):高级文件操作(shutil 模块)

❤️ 博客主页:水滴技术

🌸 订阅专栏:Python 入门核心技术

🚀 支持水滴:点赞 👍 + 收藏 ⭐ + 留言💬

文章目录

  • [1. 简介](#1. 简介)
  • [2. 常用函数](#2. 常用函数)
    • [2.1 复制文件](#2.1 复制文件)
    • [2.2 复制目录](#2.2 复制目录)
    • [2.3 移动文件或目录](#2.3 移动文件或目录)
    • [2.4 删除文件或目录](#2.4 删除文件或目录)
    • [2.5 压缩文件或目录](#2.5 压缩文件或目录)
    • [2.6 解压缩文件或目录](#2.6 解压缩文件或目录)
  • [3. 总结](#3. 总结)
  • 系列文章
  • 热门专栏

大家好,我是水滴~~

1. 简介

shutil (shell utility) 模块是 Python 标准库中的一个文件操作模块,提供了一些高级的文件操作函数,例如文件复制、移动、删除等。使用 shutil 模块可以方便地进行文件操作,而不需要手动编写复杂的文件操作代码。

2. 常用函数

2.1 复制文件

使用 shutil.copy(src, dst, *, follow_symlinks=True) 函数可以将文件从源路径复制到目标路径。其中,src 是源文件路径,dst 是目标文件路径。如果目标路径已存在,则会被覆盖。如果源路径是一个目录,则会抛出 IsADirectoryError 异常。如果目标路径是一个目录,则会将源路径中的文件复制到目标目录中,保持文件名不变。

python 复制代码
import shutil

shutil.copy('source.txt', 'destination.txt')

2.2 复制目录

使用 shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False) 函数可以将目录从源路径复制到目标路径。其中,src 是源目录路径,dst 是目标目录路径。如果目标路径已存在,则会抛出 FileExistsError 异常。symlinks 指定是否复制符号链接,默认为 False。ignore 指定要忽略的文件或目录的列表,默认为 None。copy_function 指定用于复制文件的函数,默认为 copy2。ignore_dangling_symlinks 指定是否忽略指向不存在目标的符号链接,默认为 False。

python 复制代码
import shutil

shutil.copytree('source_directory', 'destination_directory')

2.3 移动文件或目录

使用 shutil.move(src, dst, *, copy_function=copy2) 函数可以将文件或目录从源路径移动到目标路径。其中,src 是源文件或目录路径,dst 是目标文件或目录路径。如果目标路径已存在,则会被覆盖。如果源路径和目标路径在同一个文件系统上,则会使用 os.rename() 进行移动操作,否则会使用 shutil.copy2() 和 os.remove() 进行复制和删除操作。copy_function 指定用于复制文件的函数,默认为 copy2。

python 复制代码
import shutil

shutil.move('source.txt', 'destination.txt')

2.4 删除文件或目录

使用 shutil.rmtree(path, ignore_errors=False, onerror=None) 函数可以递归删除指定目录以及其下的所有文件和子目录。其中,path 是要删除的目录路径。如果 ignore_errors 为 True,则在删除过程中出现错误时会忽略错误。如果 onerror 为一个函数,则会在删除过程中出现错误时调用该函数。

python 复制代码
import shutil

shutil.rmtree('directory_to_delete')

2.5 压缩文件或目录

使用 shutil.make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=False, owner=None, group=None, logger=None) 函数可以创建一个压缩文件,支持多种格式(例如 zip、tar、gztar 和 bztar)。其中,base_name 是压缩文件的名称,format 是格式类型,root_dir 是要压缩的根目录,base_dir 是要压缩的基本目录,verbose 指定是否显示详细信息,dry_run 指定是否只模拟操作而不实际执行,owner 和 group 指定压缩文件的拥有者和组,logger 指定一个日志记录器。

python 复制代码
import shutil

shutil.make_archive('archive','zip', '.', 'dir_to_compress')

2.6 解压缩文件或目录

使用 shutil.unpack_archive(filename, extract_dir=None, format=None) 函数可以将一个压缩文件解压缩到指定目录中。其中,filename 是要解压的文件名,extract_dir 是解压后的目录路径,format 是压缩文件的格式类型,如果为 None,则会根据文件名自动识别。

python 复制代码
import shutil

shutil.unpack_archive('archive.zip', 'extracted_directory')

3. 总结

shutil 模块提供了一些高级的文件操作函数,可以方便地进行文件复制、移动、删除等操作。使用 shutil 模块可以大大简化文件操作代码的编写,提高代码的可读性和可维护性。同时,也可以使用 shutil 模块进行文件压缩和解压缩操作,提高文件处理效率。


系列文章

🔥 Python 进阶(一):PyCharm 下载、安装和使用

🔥 Python 进阶(二):操作字符串的常用方法

🔥 Python 进阶(三):正则表达式(re 模块)

🔥 Python 进阶(四):日期和时间(time、datetime、calendar 模块)

🔥 Python 进阶(五):os 模块

🔥 Python 进阶(六):文件读写(I/O)

热门专栏

👍 《Python入门核心技术》

👍 《IDEA 教程:从入门到精通》

👍 《Java 教程:从入门到精通》

👍 《MySQL 教程:从入门到精通》

👍 《大数据核心技术从入门到精通》

相关推荐
必须得开心呀1 小时前
python编写带界面的软件,需要安装哪些插件
开发语言·python
Wx-bishekaifayuan1 小时前
express皖美特色农产品网售系统53118-计算机课程设计、毕业设计
人工智能·spring boot·后端·python·课程设计·express·旅游
青少儿编程课堂1 小时前
迪杰斯特拉(Dijkstra)算法:单源最短路与赛场路线规划
c++·python·算法·bfs·信息学竞赛
计算机编程指导师2 小时前
【计算机毕设推荐】基于Hadoop+Spark的公共交通运营数据分析与可视化系统源码 毕业设计 选题推荐 毕设选题 数据分析 机器学习
大数据·hadoop·python·计算机·数据分析·spark·交通
Wx-bishekaifayuan2 小时前
springboot汉中旅游服务平台41442-计算机课程设计、毕业设计
spring boot·后端·python·django·课程设计·express·旅游
WeiXin_DZbishe2 小时前
基于springboot城市公交实时运营与调度系统-计算机毕设 附源码【课程设计】66173
java·vue.js·spring boot·后端·python·php·课程设计
泡茶喝茶写代码2 小时前
A股量化数据工程:从 REST 接口到策略信号(第 18 篇):放量缩量异动扫描
java·python·股票数据api·股票数据api接口·股票api数据接口·股票量化数据api·股票量化数据接口
WeiXin_DZbishe2 小时前
基于Springboot+AI的kuall音乐广场的设计与实现-计算机毕设 附源码【课程设计】12715
vue.js·人工智能·spring boot·后端·python·php·课程设计
imgsq4 小时前
电子学会考级 vs CCF-GESP:两套少儿编程考级怎么选
python·青少年编程