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的类方法和静态方法
Dec 13 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
python matplotlib 在指定的两个点之间连线方法
May 25 Python
Python字符串、整数、和浮点型数相互转换实例
Aug 04 Python
pandas分区间,算频率的实例
Jul 04 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
Aug 12 Python
使用Pyhton 分析酒店针孔摄像头
Mar 04 Python
Python多线程thread及模块使用实例
Apr 28 Python
python中什么是面向对象
Jun 11 Python
python使用glob检索文件的操作
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
Oracle Faq(Oracle的版本)
2006/10/09 PHP
ThinkPHP采用模块和操作分析
2011/04/18 PHP
在Linux系统的服务器上隐藏PHP版本号的方法
2015/06/06 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
2017/03/01 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
利用谷歌地图API获取点与点的距离的js代码
2012/10/11 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
2013/11/22 Javascript
ie8本地图片上传预览示例代码
2014/01/12 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
老生常谈js中的MVC
2017/07/25 Javascript
Angular @HostBinding()和@HostListener()用法
2018/03/05 Javascript
微信小程序实现星星评价效果
2018/11/02 Javascript
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
pycharm恢复默认设置或者是替换pycharm的解释器实例
2018/10/29 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
2019/07/06 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
Django认证系统user对象实现过程解析
2020/03/02 Python
python中字典增加和删除使用方法
2020/09/30 Python
python处理写入数据代码讲解
2020/10/22 Python
基于Python实现全自动下载抖音视频
2020/11/06 Python
python正则表达式re.match()匹配多个字符方法的实现
2021/01/27 Python
关于HTML5的22个初级技巧(图文教程)
2012/06/21 HTML / CSS
详解HTML5 Canvas标签及基本使用
2020/01/10 HTML / CSS
.NET remoting中对象激活的两种方式
2015/06/08 面试题
AssertionError 跟一下那个类是 “is – a”的关系
2012/02/21 面试题
摄影实习自我鉴定
2013/09/20 职场文书
建筑工程专业毕业生自荐信
2013/10/19 职场文书
实习自我鉴定
2013/12/15 职场文书
餐饮食品安全责任书
2015/01/29 职场文书
详解Vue的options
2021/05/15 Vue.js
Pytorch使用shuffle打乱数据的操作
2021/05/20 Python
【海涛教你打dota】体验一超神发条:咱是抢盾专业户
2022/04/01 DOTA
疑《守望先锋2》A测截图泄露 或将推出新模式、新界面
2022/04/03 其他游戏