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 的 with 语句详解
Jun 13 Python
详解Python函数可变参数定义及其参数传递方式
Aug 02 Python
Django的分页器实例(paginator)
Dec 01 Python
Python文件操作基本流程代码实例
Dec 11 Python
在Python中使用gRPC的方法示例
Aug 08 Python
对pyqt5多线程正确的开启姿势详解
Jun 14 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
Python符号计算之实现函数极限的方法
Jul 15 Python
python多线程分块读取文件
Aug 29 Python
关于Tensorflow分布式并行策略
Feb 03 Python
对python中list的五种查找方法说明
Jul 13 Python
python boto和boto3操作bucket的示例
Oct 30 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数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
php代码中使用换行及(\n或\r\n和br)的应用
2013/02/02 PHP
PHP易混淆函数的区别及用法汇总
2014/11/22 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
2019/04/02 PHP
YII2框架中添加自定义模块的方法实例分析
2020/03/18 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
jquery选择器之内容过滤选择器详解
2014/01/27 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
JS转换HTML转义符的方法
2016/08/24 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
vue开发调试神器vue-devtools使用详解
2017/07/13 Javascript
javascript计算对象长度的方法
2017/10/25 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
Vue项目分环境打包的实现步骤
2018/04/02 Javascript
Javascript读取上传文件内容/类型/字节数
2019/04/30 Javascript
ES6基础之数组和对象的拓展实例详解
2019/08/22 Javascript
在LayUI图片上传中,解决由跨域问题引起的请求接口错误的方法
2019/09/24 Javascript
vue学习笔记之Vue中css动画原理简单示例
2020/02/29 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
Vue常用API、高级API的相关总结
2021/02/02 Vue.js
python fabric使用笔记
2015/05/09 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
Python综合应用名片管理系统案例详解
2020/01/03 Python
python网络编程:socketserver的基本使用方法实例分析
2020/04/09 Python
python 瀑布线指标编写实例
2020/06/03 Python
python实现银行账户系统
2021/02/22 Python
酒店保安员岗位职责
2014/01/31 职场文书
党员活动日总结
2014/05/05 职场文书
2014年消防工作总结
2014/11/21 职场文书
2014年机关党委工作总结
2014/12/11 职场文书
职代会闭幕词
2015/01/28 职场文书
《围炉夜话》110句人生箴言,精辟有内涵,引人深思
2019/10/23 职场文书
Mysql官方性能测试工具mysqlslap的使用简介
2021/05/21 MySQL
react中的DOM操作实现
2021/06/30 Javascript
springboot用户数据修改的详细实现
2022/04/06 Java/Android