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中enumerate函数遍历元素用法分析
Mar 11 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Django发送邮件功能实例详解
Sep 02 Python
Django实现简单网页弹出警告代码
Nov 15 Python
Tensorflow: 从checkpoint文件中读取tensor方式
Feb 10 Python
Python读取文件内容为字符串的方法(多种方法详解)
Mar 04 Python
关于python 跨域处理方式详解
Mar 28 Python
Django ORM filter() 的运用详解
May 14 Python
python 爬虫如何实现百度翻译
Nov 16 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
Python字符串的转义字符
Apr 07 Python
python标准库ElementTree处理xml
May 20 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
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PHP利用Socket获取网站的SSL证书与公钥
2017/06/18 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP基于递归算法解决兔子生兔子问题
2018/05/11 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
JQuery 学习笔记 选择器之五
2009/07/23 Javascript
jQuery toggle()设置CSS样式
2009/11/05 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
JQuery操作tr和td内容的方法实例
2013/03/06 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
JavaScript Math.round() 方法
2015/12/18 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
2016/02/25 Javascript
JavaScript 深层克隆对象详解及实例
2016/11/03 Javascript
jquery实现input框获取焦点的简单实例
2017/01/26 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
react-native滑动吸顶效果的实现过程
2019/06/03 Javascript
VUE.js实现动态设置输入框disabled属性
2019/10/28 Javascript
[51:11]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS DT
2014/05/22 DOTA
在Python中关于中文编码问题的处理建议
2015/04/08 Python
python动态网页批量爬取
2016/02/14 Python
Python中在脚本中引用其他文件函数的实现方法
2016/06/23 Python
Python英文文章词频统计(14份剑桥真题词频统计)
2019/10/13 Python
pandas处理csv文件的方法步骤
2020/10/16 Python
CSS3——齿轮转动关键代码
2013/05/02 HTML / CSS
顶岗实习计划书
2014/01/10 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
高中生评语大全
2014/04/25 职场文书
2014年统计工作总结
2014/11/21 职场文书
班委竞选稿范文
2015/11/21 职场文书
详解Vue3使用axios的配置教程
2022/04/29 Vue.js