Python中shutil模块的学习笔记教程


Posted in Python onApril 04, 2017

介绍

shutil 名字来源于 shell utilities,有学习或了解过Linux的人应该都对 shell 不陌生,可以借此来记忆模块的名称。该模块拥有许多文件(夹)操作的功能,包括复制、移动、重命名、删除等等

一、chutil.copy(source, destination)

shutil.copy() 函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式。如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名。

举例如下:

>> import shutil
 >> import os
 >> os.chdir('C:\')
 >> shutil.copy('C:\spam.txt', 'C:\delicious')
 'C:\delicious\spam.txt'
 >> shutil.copy('eggs.txt', 'C:\delicious\eggs2.txt')
 'C:\delicious\eggs2.txt'

如代码所示,该函数的返回值是复制成功后的字符串格式的文件路径

二、shutil.copytree(source, destination)

shutil.copytree()函数复制整个文件夹,将 source 文件夹中的所有内容复制到 destination 中,包括 source 里面的文件、子文件夹都会被复制过去。两个参数都是字符串格式。

注意:如果 destination 文件夹已经存在,该操作并返回一个 FileExistsError 错误,提示文件已存在。即表示,如果执行了该函数,程序会自动创建一个新文件夹(destination参数)并将 source 文件夹中的内容复制过去

举例如下:

>> import shutil
 >> import os
 >> os.chdir('C:\')
 >> shutil.copytree('C:\bacon', 'C:\bacon_backup')
 \'C:\bacon_backup'

如以上代码所示,该函数的返回值是复制成功后的文件夹的绝对路径字符串

所以该函数可以当成是一个备份功能

三、shutil.move(source, destination)

shutil.move() 函数会将 source 文件或文件夹移动到 destination 中。返回值是移动后文件的绝对路径字符串。

如果 destination 指向一个文件夹,那么 source 文件将被移动到 destination 中,并且保持其原有名字。例如:

>> import shutil
 >> shutil.move('C:\bacon.txt', 'C:\eggs')
 'C:\eggs\bacon.txt'

上例中,如果 C:\eggs 文件夹中已经存在了同名文件 bacon.txt,那么该文件将被来自于 source 中的同名文件所重写。

如果 destination 指向一个文件,那么 source 文件将被移动并重命名,如下:

>> shutil.move('C:\bacon.txt', 'C:\eggs\new_bacon.txt')
 'C:\eggs\new_bacon.txt'

等于是移动+重命名

<b>注意,如果 destination 是一个文件夹,即没有带后缀的路径名,那么 source 将被移动并重命名为 destination</b>,如下:

>> shutil.move('C:\bacon.txt', 'C:\eggs')
 'C:\eggs'

即 bacon.txt 文件已经被重命名为 eggs,是一个没有文件后缀的文件

最后,destination 文件夹必须是已经存在的,否则会引发异常:

>> shutil.move('spam.txt', 'C:\does_not_exist\eggs\ham')
 Traceback (most recent call last):
 File "D:\Python36\lib\shutil.py", line 538, in move
 os.rename(src, real_dst)
 FileNotFoundError: [WinError 3] 系统找不到指定的路径。: 'test.txt' -> 'C:\does_not_exist\eggs\ham'
 During handling of the above exception, another exception occurred:
 Traceback (most recent call last):
 File "

四、永久性删除文件和文件夹

这里有涉及到 os 模块中的相关函数

os.unlink(path) 会删除 path 路径文件

os.rmdir(path) 会删除 path 路径文件夹,但是这个文件夹必须是空的,不包含任何文件或子文件夹

shutil.rmtree(path) 会删除 path 路径文件夹,并且在这个文件夹里面的所有文件和子文件夹都会被删除

利用函数执行删除操作时,应该倍加谨慎,因为如果想要删除 txt 文件,而不小心写到了 rxt ,那么将会给自己带来麻烦

此时,我们可以利用字符串的 endswith 属性对文件格式进行检查与筛选

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python list 合并连接字符串的方法
Mar 09 Python
用Python进行基础的函数式编程的教程
Mar 31 Python
python绘图方法实例入门
May 19 Python
详解Python中的type()方法的使用
May 21 Python
Python调用C# Com dll组件实战教程
Oct 12 Python
Python实现的列表排序、反转操作示例
Mar 13 Python
详解Python 解压缩文件
Apr 09 Python
Python学习笔记之For循环用法详解
Aug 14 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
pytorch实现focal loss的两种方式小结
Jan 02 Python
Python实现在Windows平台修改文件属性
Mar 05 Python
详解Django中的FBV和CBV对比分析
Mar 01 Python
python 遍历字符串(含汉字)实例详解
Apr 04 #Python
python模拟登录并且保持cookie的方法详解
Apr 04 #Python
python 容器总结整理
Apr 04 #Python
详解Python中最难理解的点-装饰器
Apr 03 #Python
JSON Web Tokens的实现原理
Apr 02 #Python
Python 40行代码实现人脸识别功能
Apr 02 #Python
Python可变参数用法实例分析
Apr 02 #Python
You might like
咖啡豆要不要放冰箱的原因
2021/03/04 冲泡冲煮
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
thinkPHP分页功能实例详解
2017/05/05 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
php文件包含的几种方式总结
2019/09/19 PHP
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
jquery ajax 同步异步的执行示例代码
2010/06/23 Javascript
基于jquery的自定义鼠标提示效果 jquery.toolTip
2010/11/14 Javascript
json对象转字符串如何实现
2012/12/02 Javascript
判断ie的两种简单方法
2013/08/12 Javascript
js 距离某一时间点时间是多少实现代码
2013/10/14 Javascript
一行命令搞定node.js 版本升级
2014/07/20 Javascript
初始Nodejs
2014/11/08 NodeJs
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
百度地图API之本地搜索与范围搜索
2015/07/30 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
JQuery通过AJAX从后台获取信息显示在表格上并支持行选中
2015/09/15 Javascript
概述jQuery的元素筛选
2016/11/23 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
2016/11/24 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
javascript设计模式 ? 模板方法模式原理与用法实例分析
2020/04/23 Javascript
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python面向对象之类的封装操作示例
2019/06/08 Python
python django model联合主键的例子
2019/08/06 Python
python读写csv文件的方法
2019/08/13 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
安全检查与奖惩制度
2014/01/23 职场文书
英语简历自我评价
2014/01/26 职场文书
介绍信范文
2015/01/31 职场文书
Python标准库之typing的用法(类型标注)
2021/06/02 Python
使用CSS3实现按钮悬停闪烁动态特效代码
2021/08/30 HTML / CSS
MongoDB数据库部署环境准备及使用介绍
2022/03/21 MongoDB