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实现Linux中的du命令
Jun 12 Python
python re模块的高级用法详解
Jun 06 Python
Python对切片命名的实现方法
Oct 16 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
python反编译学习之字节码详解
May 19 Python
python调用摄像头拍摄数据集
Jun 01 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
python代码打印100-999之间的回文数示例
Nov 24 Python
pytorch锁死在dataloader(训练时卡死)
May 28 Python
python 远程执行命令的详细代码
Feb 15 Python
Python使用socket去实现TCP客户端和TCP服务端
Apr 12 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
php array_map array_multisort 高效处理多维数组排序
2009/06/11 PHP
php编程每天必学之验证码
2016/03/03 PHP
php 输入输出流详解及示例代码
2016/08/25 PHP
php 输出json及显示json中的中文汉字详解及实例
2016/11/09 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
php从数据库中获取数据用ajax传送到前台的方法
2018/08/20 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
2009/04/24 Javascript
从阶乘函数对比Javascript和C#的异同
2012/05/31 Javascript
JavaScript实现维吉尼亚(Vigenere)密码算法实例
2013/11/22 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
2015/02/15 Javascript
JQuery控制radio选中和不选中方法总结
2015/04/15 Javascript
jQuery实现弹出窗口中切换登录与注册表单
2015/06/05 Javascript
无刷新上传文件并返回自定义值
2015/06/11 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
第二篇Bootstrap起步
2016/06/21 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
2017/05/23 Javascript
Vue 滚动行为的具体使用方法
2017/09/13 Javascript
webpack打包js的方法
2018/03/12 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
js+canvas实现五子棋小游戏
2020/08/02 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
2020/12/10 Javascript
[04:03]2014DOTA2西雅图国际邀请赛 LGD战队巡礼
2014/07/07 DOTA
Python线性方程组求解运算示例
2018/01/17 Python
tensorflow实现简单的卷积网络
2018/05/24 Python
Python搭建HTTP服务过程图解
2019/12/14 Python
使用Python给头像加上圣诞帽或圣诞老人小图标附源码
2019/12/25 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
实例讲解Python 迭代器与生成器
2020/07/08 Python
台湾7-ELEVEN线上购物中心:7-11
2021/01/21 全球购物
总经理岗位职责
2013/11/09 职场文书
物理教学随笔感言
2014/02/22 职场文书
运动会入场口号
2014/06/07 职场文书
小学生春游活动方案
2014/08/20 职场文书
python实现简易自习室座位预约系统
2021/06/30 Python