0

0

Python里shutil模块 高阶文件操作shutil的移动复制归档功能

冰火之心

冰火之心

发布时间:2025-06-08 17:45:03

|

839人浏览过

|

来源于php中文网

原创

shutil模块提供移动、复制、打包文件等高阶操作。1.移动用shutil.move(),可重命名或覆盖文件;2.复制单个文件用shutil.copy(),保留内容和权限,复制目录用shutil.copytree(),目标路径不可存在;3.打包用shutil.make_archive(),支持zip/tar格式,解压用shutil.unpack_archive();4.其他功能包括删除目录shutil.rmtree()、查找命令shutil.which()、查看磁盘使用shutil.disk_usage(),使用时注意测试防止误删。

在 Python 中处理文件和目录时,除了基本的读写操作,有时候还需要进行移动、复制甚至打包归档等操作。这时候 shutil 模块就派上用场了。它提供了很多方便的函数,让你能轻松完成这些“高阶”文件操作。


移动文件或目录:shutil.move()

如果你需要把一个文件或者整个目录从一个地方挪到另一个地方,shutil.move() 就是你的首选。

这个函数的行为很像系统里的“剪切+粘贴”,使用起来也非常简单:

import shutil
shutil.move('source_folder/file.txt', 'target_folder/')
  • 如果目标路径不存在,会自动创建。
  • 如果目标路径已经存在同名文件,会被覆盖(注意备份)。
  • 如果你移动的是一个目录,里面的所有内容都会被一起移过去。
一个小技巧:如果你想重命名文件也可以用这个方法,只要在目标路径里改个名字就行,比如:shutil.move('old_name.txt', 'new_name.txt')

复制文件或目录:shutil.copy() 和 shutil.copytree()

复制比移动更常用,特别是你想保留原文件的情况下。常用的有两个函数:

立即学习Python免费学习笔记(深入)”;

  • shutil.copy(src, dst):复制单个文件
  • shutil.copytree(src, dst):复制整个目录及其内容

举个例子:

# 复制单个文件
shutil.copy('source.txt', 'backup.txt')

# 复制整个文件夹
shutil.copytree('original_dir', 'backup_dir')

需要注意的地方:

vizcom.ai
vizcom.ai

AI草图渲染工具,快速将手绘草图渲染成精美的图像

下载
  • copy() 会保留原文件的内容和权限信息,但不会复制元数据(如时间戳)
  • 如果想复制元数据,可以用 copy2() 替代
  • copytree() 的目标路径不能已存在,否则会报错

打包与解压:shutil.make_archive() 和 shutil.unpack_archive()

当你想把一堆文件打成压缩包,或者反过来解压一个 zip 文件,shutil 同样支持。

打包成压缩文件

shutil.make_archive('backup', 'zip', 'my_files')

这段代码会把 my_files 目录下的所有内容打包成 backup.zip

  • 第一个参数是输出文件名(不含扩展名)
  • 第二个参数是格式,可以是 'zip', 'tar', 'gztar'
  • 第三个参数是要打包的目录

解压文件

shutil.unpack_archive('backup.zip', 'extract_here')
  • 第一个参数是压缩包路径
  • 第二个参数是解压的目标路径,不填的话默认当前目录

其他实用功能简要提一下

虽然不是标题重点,但这里顺便提几个有用的函数:

  • shutil.rmtree(path):删除整个目录(包括里面的文件)
  • shutil.which(cmd):查找某个命令是否存在 PATH 中
  • shutil.disk_usage(path):查看磁盘使用情况

这些都能在日常脚本开发中带来便利。


基本上就这些,shutil 虽然功能不算复杂,但非常实用。关键是在做批量文件操作时,能省下不少手动处理的时间。不过也正因为它的“破坏性”操作较多,比如移动、删除,建议在正式运行前多测试几次,防止误删重要文件。

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

742

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

634

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

756

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

617

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1259

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

547

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

577

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

705

2023.08.11

c++主流开发框架汇总
c++主流开发框架汇总

本专题整合了c++开发框架推荐,阅读专题下面的文章了解更多详细内容。

23

2026.01.09

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 6.9万人学习

Django 教程
Django 教程

共28课时 | 2.9万人学习

Pandas 教程
Pandas 教程

共15课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号