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设置windows桌面壁纸的实现代码
Jan 28 Python
如何搜索查找并解决Django相关的问题
Jun 30 Python
Python常用小技巧总结
Jun 01 Python
Python lxml模块安装教程
Jun 02 Python
Python元组操作实例分析【创建、赋值、更新、删除等】
Jul 24 Python
python web基础之加载静态文件实例
Mar 20 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
pandas 数据索引与选取的实现方法
Jun 21 Python
Pandas_cum累积计算和rolling滚动计算的用法详解
Jul 04 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
python实现从本地摄像头和网络摄像头截取图片功能
Jul 11 Python
python数字图像处理之对比度与亮度调整示例
Jun 28 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
一个目录遍历函数
2006/10/09 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript 模拟JQuery的Ready方法实现并出现的问题
2009/12/06 Javascript
JS中的prototype与面向对象的实例讲解
2013/05/22 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
使用jquery prev()方法找到同级的前一个元素
2014/07/11 Javascript
Javascript 高阶函数使用介绍
2015/06/15 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
javascript实现数字倒计时特效
2016/03/30 Javascript
js手机号4位显示空格,银行卡每4位显示空格效果
2017/03/23 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
简述vue中的config配置
2018/01/23 Javascript
vue3.0 CLI - 2.4 - 新组件 Forms.vue 中学习表单
2018/09/14 Javascript
写gulp遇到的ES6问题详解
2018/12/03 Javascript
详解node.js创建一个web服务器(Server)的详细步骤
2021/01/15 Javascript
Python中的map、reduce和filter浅析
2014/04/26 Python
python的dataframe和matrix的互换方法
2018/04/11 Python
浅谈pycharm下找不到sqlalchemy的问题
2018/12/03 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
pycharm中使用request和Pytest进行接口测试的方法
2020/07/31 Python
VSCODE配置Markdown及Markdown基础语法详解
2021/01/19 Python
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
美国精品地毯网站:Boutique Rugs
2020/03/04 全球购物
任命书格式
2014/06/05 职场文书
园林系毕业生求职信
2014/06/23 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
2015年设计师个人工作总结
2015/04/25 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
故意伤害辩护词
2015/05/21 职场文书
表彰大会新闻稿
2015/07/17 职场文书
《用字母表示数》教学反思
2016/02/17 职场文书
CSS Transition通过改变Height实现展开收起元素
2021/08/07 HTML / CSS