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实现的一个火车票转让信息采集器
Jul 09 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
Jul 01 Python
Python3自动签到 定时任务 判断节假日的实例
Nov 13 Python
对python 多个分隔符split 的实例详解
Dec 20 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python 求某条线上特定x值或y值的点坐标方法
Jul 09 Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 Python
python爬虫 urllib模块反爬虫机制UA详解
Aug 20 Python
Python爬虫库BeautifulSoup获取对象(标签)名,属性,内容,注释
Jan 25 Python
python deque模块简单使用代码实例
Mar 12 Python
python tkinter实现定时关机
Apr 21 Python
Python 匹配文本并在其上一行追加文本
May 11 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
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
php算法实例分享
2015/07/14 PHP
完美解决Thinkphp3.2中插入相同数据的问题
2017/08/01 PHP
laravel dingo API返回自定义错误信息的实例
2019/09/29 PHP
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
2008/11/03 Javascript
Jquery Ajax学习实例3 向WebService发出请求,调用方法返回数据
2010/03/16 Javascript
ASP.NET jQuery 实例13 原创jQuery文本框字符限制插件-TextArea Counter
2012/02/03 Javascript
分享8款优秀的 jQuery 加载动画和进度条插件
2012/10/24 Javascript
得到form下的所有的input的js代码
2013/11/07 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
Js操作DOM元素及获取浏览器高宽的简单方法
2016/09/08 Javascript
微信小程序 封装http请求实例详解
2017/01/16 Javascript
深入理解Nodejs Global 模块
2017/06/03 NodeJs
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
微信小程序模版渲染详解
2018/01/26 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python数据库的连接实现方法与注意事项
2016/02/27 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
对Python2与Python3中__bool__方法的差异详解
2018/11/01 Python
pytorch方法测试详解——归一化(BatchNorm2d)
2020/01/15 Python
python实现定时发送邮件
2020/12/23 Python
css3设置box-pack和box-align让div里面的元素垂直居中
2014/09/01 HTML / CSS
html5+css3之CSS中的布局与Header的实现
2014/11/21 HTML / CSS
手机端用rem+scss做适配的详解
2017/11/15 HTML / CSS
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
后勤岗位职责
2013/11/26 职场文书
总经理2015中秋节致辞
2015/07/29 职场文书
英语教学课后反思
2016/02/15 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
Oracle安装TNS_ADMIN环境变量设置参考
2021/11/01 Oracle
全面盘点MySQL中的那些重要日志文件
2021/11/27 MySQL
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers