python中shutil模块_Python中shutil模块的学习笔记教程

介绍

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'

等于是移动+重命名

注意,如果 destination 是一个文件夹,即没有带后缀的路径名,那么 source 将被移动并重命名为 destination,如下:

>> 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 属性对文件格式进行检查与筛选

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/558254.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTML转义字符大全<转>

为什么要用转义字符串&#xff1f; HTML中<&#xff0c;>&#xff0c;&等有特殊含义&#xff08;<&#xff0c;>&#xff0c;用于链接签&#xff0c;&用于转义&#xff09;&#xff0c;不能直接使用。这些符号是不显示在我们最终看到的网页里的&#xff0c…

python测网速_tespeed-测试网速的Python工具

1.安装(环境CentOS7)#pip install lxml#wget wget http://sourceforge.net/projects/socksipy/files/socksipy/SocksiPy%201.00/SocksiPy.zip#git clone https://github.com/Janhouse/tespeed.git#mv SocksiPy.zip tespeed/SocksiPy/#cd tespeed/SocksiPy/#unzip SocksiPy.zip#…

Gensee SDK RoleType详解

目录RoleType使用场景&#xff1a;方法与使用说明源码RoleType 接着之前的 UserInfo,对RoleType做进一步说明. 此类是SDK的公共类&#xff0c;可以在任一SDK使用方进行调用&#xff0c;之前有提到role是一个“复合”的值1&#xff0c;所以不能简单的用“” 来判断&#xff0c;…

vc 通过句柄修改窗口大小_漫画:对象是如何被找到的?句柄 OR 直接指针?

小贴士&#xff1a;想要使用并定位 Java 对象&#xff0c;就要用到 Java 虚拟机栈&#xff08;Java Virtual Machine Stack&#xff09;&#xff0c;它描述的是 Java 方法执行的线程内存模型&#xff1a;每个方法被执行的时候&#xff0c;Java 虚拟机都会同步创建一个栈帧&…

数据结构快速掌握和温习-面试神器

由于原文有部分文字没有显示&#xff0c;本文有所修改。主要包括文字和缩进。 目录 Q1&#xff1a;数据结构和算法的知识点整理&#xff1a; Q2&#xff1a;链表&#xff0c;队列和栈的区别 Q3&#xff1a;简述快速排序过程 Q4&#xff1a;快速排序算法的原理 Q5&#xff1a;简…

python阴阳师_如何用Python找到阴阳师妖怪屋的最佳探索队伍!强不强?

程序由来最初想要写这个小程序是因为&#xff0c;9月份那段时间我在玩妖怪屋。因为刚开始抽卡&#xff0c;要啥啥没有&#xff0c;所以探索队伍也只是放了几个自己记得有关联的式神。在网上有找到完整版的羁绊&#xff0c;但是怎么根据羁绊找到最佳的式神组合就成问题了。当时我…

Android iOS防录屏截屏

目录Android防录屏和截屏关于WindowManager.LayoutParams.FLAG_SECURE关于Display.FLAG_SECUREiOS防录屏和截屏监听截屏录屏监听需求与安全总是对立的&#xff0c;有新的需求&#xff0c;就有新的接口开放&#xff0c;但随之而来的就是利用新接口或者新接口的使用者&#xff08…

work节点使用外部包_AFLSmart工具简单分析及使用介绍

AFLSmart 是一个在 AFL 基础上&#xff0c;结合了 Peach 的结构化输入组件的灰盒 smart fuzz 工具。AFLSmart 链接&#xff1a;https://github.com/aflsmart/aflsmart参考资料&#xff1a;《Smart Greybox Fuzzing》什么是 AFLSmart灰盒 smart fuzz灰盒测试是基于程序运行时刻的…

Android adb 启动APP

目录启动命令一 常规命令 包名/activity二 常规命令 包名命令关闭App获取包名和activity的路径代码获取1 命令获取( 需要app运行在前台&#xff0c;停留在启动界面)2命令获取(先执行命令&#xff0c;再点击app启动)启动命令 一 常规命令 包名/activity adb shell am start…

python语言使用什么语句实现上下文管理协议_Python 上下文管理器

上下文管理器在使用Python编程中&#xff0c;可以会经常碰到这种情况&#xff1a;有一个特殊的语句块&#xff0c;在执行这个语句块之前需要先执行一些准备动作&#xff1b;当语句块执行完成后&#xff0c;需要继续执行一些收尾动作。例如&#xff1a;当需要操作文件或数据库的…

Android日志[基础篇]Android Log日志输出

Android日志[基础篇]二 Android Studio修改LogCat日志的颜色 android.util.Log输出日志的常用方法如下&#xff1a; Log.v(String tag, String msg)Log.d(String tag, String msg)Log.i(String tag, String msg)Log.w(String tag, String msg)Log.e(String tag, String msg) …

python函数应用_python 函数应用

#函数的参数就是个变量#定义函数的时候&#xff0c;使用关键字参数&#xff0c;可以指定默认值def hello(namereboot,age1):return hello %s,your age is %s %(name,age)print hello(reboot,3)print hello(3,reboot)#print hello(age3,namereboot)print hello(reboot)def f(n):…

Android日志[基础篇]二 Android Studio修改LogCat日志的颜色

上一篇提到Android日志的5个级别的日志输出&#xff0c;在logcat里面设置自己喜欢或习惯的颜色&#xff0c;本文不只讲Android Sudio修改logcat的日志颜色。 代码和效果 代码 private void logColor(){Log.v(TAG,"logColor verbose");Log.d(TAG,"logColor de…

readfile函数使用方法_1分钟学会LOOKUP函数,有网友说使用这个方法,初学者秒变大神...

Hi&#xff0c;大家好&#xff0c;本专栏将会从零开始和大家用图文的方式&#xff0c;30天让你从不会到熟练使用函数&#xff0c;0基础开始学习Excel函数&#xff0c;让你喜欢上它&#xff01;有兴趣的小伙伴可以持续关注我&#xff0c;或者在专栏进行查看学习&#xff0c;愿与…

Android JNI Attempt to remove non-JNI local reference, dumping thread

Attempt to remove non-JNI local reference, dumping thread 解决办法&#xff1a; 去除Jni代码 env->DeleteLocalRef(javaObject);注意&#xff1a;是java层传递给jni层的对象不需用了DeleteLocalRef来进行对象删除&#xff0c;jni层创建的对象仍然需要保留代码。 这个…

背景图层和普通图层的区别_图层样式(一)—高级混合选项

一、图层顺序为了便于说明&#xff0c;首先建立例子&#xff0c;新建图层&#xff0c;用画笔随便画个圈&#xff0c;新建蒙版随便画一笔&#xff0c;然后把所有图层样式加给它。可以看到样式从上到下的顺序&#xff0c;这也是它们混合的图层顺序。图层顺序我的效果&#xff0c;…

Android9.0 http网络请求失败问题的处理

目录处理方法(任意一种)&#xff1a;APP改用https请求targetSdkVersion 降到27以下配置network-security-config&#xff08;推荐&#xff09;原因出错案例处理方法(任意一种)&#xff1a; APP改用https请求 这种方式是最佳方法&#xff0c;需要前后端协调&#xff0c;后端得…

代码里无图片地址_项目实战:爬高清图片

↑ 关注 星标 &#xff0c;后台回复【大礼包】送你2TPython自学资料好消息&#xff1a;Python学习交流群&#xff0c;已经建立&#xff0c;猛戳加入之前我发过一些爬虫的文章&#xff0c;不过一直没发过爬取图片的&#xff0c;今天就给大家分享一篇吧&#xff01;/1 前言/上篇…

Android TextView通过SpannableString设置字体、大小、颜色、样式、超级链接

代码应该都能看明白 public class MainActivity extends ActionBarActivity {private TextView tv, tv2;private SpannableString sStr, sStr2;Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.act…

winform项目_winform项目——仿QQ即时通讯程序01:原理及项目分析

即时通讯程序&#xff0c;腾讯QQ可以说是一家独大&#xff0c;虽然市场上仍然有类似QQ的即时通讯程序&#xff0c;但是基本上面向的对象都是特定人群。那么&#xff0c;现在做一个即时通讯的软件还有意义吗&#xff1f;在我看来&#xff0c;意义非常大。作为一个学习编程的人&a…