一、shutil -- 是一种高层次的文件操作工具类似于高级API,而且主要强大之处在于其对文件的复制与删除操作更是比较支持好。

1、shutil.copy(src,dst)复制一个文件到另一个目录下,返回dst路径。dst可以是一个文件,或者是一个目录。但src必须是一个文件,否则会报错。

>>> shutil.copy("e:\\test\\pp.txt","f:\\yy.txt")
'f:\\yy.txt'
>>> shutil.copy("e:\\test","f:\\")
Traceback (most recent call last):
File "<pyshell#15>", line 1, in <module>
shutil.copy("e:\\test","f:\\")
File "D:\Program Files\python3.6\lib\shutil.py", line 235, in copy
copyfile(src, dst, follow_symlinks=follow_symlinks)
File "D:\Program Files\python3.6\lib\shutil.py", line 114, in copyfile
with open(src, 'rb') as fsrc:
PermissionError: [Errno 13] Permission denied: 'e:\\test'

2、shutil.copy2(src,dst)在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了

3、shutil.copyfile(src,dst)从源src复制到dst中去,src和dst必须是文件,不能是文件夹

>>> shutil.copyfile("e:\\test\\pp.txt","f:\\oo.txt")
'f:\\oo.txt'
>>> shutil.copyfile("e:\\test\\pp.txt","f:\\")
Traceback (most recent call last):
File "<pyshell#19>", line 1, in <module>
shutil.copyfile("e:\\test\\pp.txt","f:\\")
File "D:\Program Files\python3.6\lib\shutil.py", line 115, in copyfile
with open(dst, 'wb') as fdst:
FileNotFoundError: [Errno 2] No such file or directory: 'f:\\'

4、shutil.copystat( src, dst)只复制权限、最后访问时间、最后修改时间,不会复制文件内容

5、shutil.copytree(olddir,newdir,True/Flase)把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接。

>>> shutil.copytree("e:\\test\\","f:\\yy")
'f:\\yy'

6、shutil.copymode(src,dst)只复制权限

7、shutil.move(src,dst)将路径src处的文件夹移动到路径dst,并返回新位置的绝对路径字符串。src可以是一个文件夹,也可以是一个文件。

如果dst目录下已经存在了src中的文件名,则会报错。

>>> shutil.move("e:\\test\\pp.txt","f:\\yy\\uu")
'f:\\yy\\uu'
>>> shutil.move("e:\\test","f:\\")
'f:\\test'
>>> shutil.move("e:\\answer1.txt","f:\\yy")
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
shutil.move("e:\\answer1.txt","f:\\yy")
File "D:\Program Files\python3.6\lib\shutil.py", line 536, in move
raise Error("Destination path '%s' already exists" % real_dst)
shutil.Error: Destination path 'f:\yy\answer1.txt' already exists

这里注意一点:如果src中的文件只有只读权限,则会报错,但src文件仍然正常的copy到了dst下。但src不会被删除

>>> shutil.move("e:\\answer1.txt","f:\\yy")
Traceback (most recent call last):
File "D:\Program Files\python3.6\lib\shutil.py", line 538, in move
os.rename(src, real_dst)
OSError: [WinError 17] 系统无法将文件移到不同的磁盘驱动器。: 'e:\\answer1.txt' -> 'f:\\yy\\answer1.txt' During handling of the above exception, another exception occurred: Traceback (most recent call last):
File "<pyshell#28>", line 1, in <module>
shutil.move("e:\\answer1.txt","f:\\yy")
File "D:\Program Files\python3.6\lib\shutil.py", line 553, in move
os.unlink(src)
PermissionError: [WinError 5] 拒绝访问。: 'e:\\answer1.txt'

如果dst所指的目录不存在,而src是一个文件,所以程序默认会认为dst是指的一个没有扩展名的文件,而不是一个文件夹。

>>> shutil.move("e:\\answer2.txt","f:\\qq")
'f:\\qq'

这样就在f盘下生成了一个名为qq的文件,,如图所示:

二、os和shutil模块删除文件和文件夹

1、os.unlink(path)将删除path处的文件,成功删除后没有任何返回。path是一个文件的完整路径

os.unlink("f:\\yy\\answer1.txt")

2、os.rmdir(path)将删除path处的文件夹,该文件夹必须为空。其中没有任何文件和文件夹

>>> os.rmdir("f:\\yy\\")
Traceback (most recent call last):
File "<pyshell#39>", line 1, in <module>
os.rmdir("f:\\yy\\")
OSError: [WinError 145] 目录不是空的。: 'f:\\yy\\'
>>> os.rmdir("f:\\yy\\test")

3、shutil.rmtree(path)将删除path处的文件夹,它包含的所有文件和文件夹都将被删除

shutil模块和os模块对比的更多相关文章

  1. python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )

    1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...

  2. 常用模块:os模块,logging模块等

    一    os模块 那么作为一个常用模块,os模块是与操作系统交互的一个模块. 那么os模块中我们常用的一般有以下几种: os.listdir('dirname') 以列表的形式列出指定目录下的所有文 ...

  3. Python入门-模块2(random模块、os模块)

    >>> random.randomrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randint(1,10) #返回1-1 ...

  4. day5模块学习 -- os模块学习

    python基础之模块之os模块 os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/ ...

  5. 模块之-os模块

    模块之-os模块 >>> import os >>> os.getcwd() #获取当前工作目录 'C:\\Users\\Administrator' >&g ...

  6. (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

  7. 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操

    目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...

  8. 模块—— 序列化模块、random模块、os模块 、 sys模块、hashlib模块、collections模块

    今天我们来说说Python中的模块: 第三方模块 可以下载/安装/使用 第一步:将pip.exe 所在的目录添加到环境变量中第二步:输入pip第三步:pip install 要安装的模块名称  #pi ...

  9. time 模块,random模块,os模块

    一 :time 模块 python中,通常有几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(t ...

  10. python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...

随机推荐

  1. [HTML]音乐自动播放(兼容微信)

    文件下载:音乐自动播放(兼容微信).zip   <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  2. AES五种加密模式(CBC、ECB、CTR、OCF、CFB)

    --转载https://www.cnblogs.com/starwolf/p/3365834.html https://www.freebuf.com/column/171939.html 分组密码有 ...

  3. ---rk3288 mipi 整发(适用于新版的kernel 4.4 )

    http://www.pianshen.com/article/7245318143/ 老的Anroid 5.1 下 Linux 3.10 的数据的名字和 处理方式有不少不同 不过rk3128 还在走 ...

  4. 给centos 7添加硬盘空间

    前言 今天在安装ambari的时候,制作amberi本地yum源的时候出现了一个问题,虚拟机的磁盘空间不足了,后来发现是因为这个节点之前本来只打算作为数据节点使用的,后来所以后来只给它分配了20G的硬 ...

  5. SQL表变量和临时表

    一.表变量 表变量在SQL Server 2000中首次被引入.表变量的具体定义包括列定义,列名,数据类型和约束.而在表变量中可以使用的约束包括主键约束, 唯一约束,NULL约束和CHECK约束(外键 ...

  6. Server Memory Server Configuration Options 服务器内存服务配置选项

    Server Memory Server Configuration Options https://docs.microsoft.com/en-us/sql/database-engine/conf ...

  7. 1.express中间件的简介

    express中间件的意思 1, 中间件是一个模块.在js中,模块意味着函数,所以中间件是一个函数.那么这个函数长什么样子? 这还要从中间件的功能说起,它拦截http 服务器提供的请求和响应对象,执行 ...

  8. C# 加载静态资源问题

    加载的格式是这样:

  9. Eclipse设置类,方法注释模版

    首先打开Eclipse配置选项:Window->Preference->Java->Code Style->Code Template 配置Comments下的每个选项的模版, ...

  10. JAVA企业级服务器应用之Tomcat

    Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache,Sun和其他一些公司及个人共同开发而 ...