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语言技巧之三元运算符使用介绍
Mar 04 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
python 获取list特定元素下标的实例讲解
Apr 09 Python
python基于opencv检测程序运行效率
Dec 28 Python
python机器学习库xgboost的使用
Jan 20 Python
Python写出新冠状病毒确诊人数地图的方法
Feb 12 Python
使用python创建生成动态链接库dll的方法
May 09 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
详解如何使用Pytest进行自动化测试
Jan 14 Python
python生成随机数、随机字符、随机字符串
Apr 06 Python
Python基础之Socket通信原理
Apr 22 Python
python flask框架快速入门
May 14 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
曾在DC漫画界反派角色扮演的演员,谁才是你心目中的小丑之王?
2020/04/09 欧美动漫
PHP面向对象编程快速入门
2006/10/09 PHP
如何利用php+mysql保存和输出文件
2006/10/09 PHP
win7+apache+php+mysql环境配置操作详解
2013/06/10 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
php封装的单文件(图片)上传类完整实例
2016/10/18 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
浅谈JavaScript数据类型及转换
2015/02/28 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
jQuery横向擦除焦点图特效代码分享
2015/09/06 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
chrome浏览器如何断点调试异步加载的JS
2016/09/05 Javascript
Express+Nodejs 下的登录拦截实现代码
2017/07/01 NodeJs
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
mongodb初始化并使用node.js实现mongodb操作封装方法
2019/04/02 Javascript
Vue axios获取token临时令牌封装案例
2020/09/11 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
在IPython中执行Python程序文件的示例
2018/11/01 Python
Pytorch卷积层手动初始化权值的实例
2019/08/17 Python
python集合常见运算案例解析
2019/10/17 Python
将python文件打包exe独立运行程序方法详解
2020/02/12 Python
xadmin使用formfield_for_dbfield函数过滤下拉表单实例
2020/04/07 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
简单html5代码获取地理位置
2014/03/31 HTML / CSS
护理专业学生的求职信范文
2013/12/11 职场文书
实习教师自我鉴定
2013/12/12 职场文书
建筑经济管理专业求职信分享
2014/01/06 职场文书
银行类自荐信
2014/02/04 职场文书
语文教学感言
2014/02/06 职场文书
测试工程师程序员求职信范文
2014/02/20 职场文书
个人承诺书
2014/03/26 职场文书
离婚协议书格式
2014/11/21 职场文书
2015年社区党务工作总结
2015/04/21 职场文书
2015年幼儿园保育工作总结
2015/05/12 职场文书
2016年中秋节晚会领导致辞
2015/11/26 职场文书
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android