shutil模块和os模块对比
一、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模块对比的更多相关文章
- python 常用模块(一): os模块,序列化模块(json模块 pickle模块 )
1.os模块 2.序列化模块:(1)json模块 和 pickle模块 一.os模块 os.path.abspath: (1)把路径中不符合规范的/改成操作系统默认的格式 import os path ...
- 常用模块:os模块,logging模块等
一 os模块 那么作为一个常用模块,os模块是与操作系统交互的一个模块. 那么os模块中我们常用的一般有以下几种: os.listdir('dirname') 以列表的形式列出指定目录下的所有文 ...
- Python入门-模块2(random模块、os模块)
>>> random.randomrange(1,10) #返回1-10之间的一个随机数,不包括10 >>> random.randint(1,10) #返回1-1 ...
- day5模块学习 -- os模块学习
python基础之模块之os模块 os模块 os模块的作用: os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/ ...
- 模块之-os模块
模块之-os模块 >>> import os >>> os.getcwd() #获取当前工作目录 'C:\\Users\\Administrator' >&g ...
- (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...
- 时间模块之datatime模块、os模块、sys模块、json模块、json模块实操
目录 一.模块的绝对导入和相对导入 二.包的概念 三.编程思想的转变 四.软件开发目录规范 五.常见的内置模块 一.时间模块之datatime模块 1.datetime.datetime.today( ...
- 模块—— 序列化模块、random模块、os模块 、 sys模块、hashlib模块、collections模块
今天我们来说说Python中的模块: 第三方模块 可以下载/安装/使用 第一步:将pip.exe 所在的目录添加到环境变量中第二步:输入pip第三步:pip install 要安装的模块名称 #pi ...
- time 模块,random模块,os模块
一 :time 模块 python中,通常有几种方式来表示时间: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“type(t ...
- python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
随机推荐
- shell脚本修改文本中匹配行之前的行的方法
原创文件,欢迎阅读,禁止转载. 例子中是把 finish 前一行的 "yes" 改成 "YES"有一个方法就是利用sed+awk一起来完成. zjk@zjk:~ ...
- Linux 重装系统 连接不上的问题
https://blog.csdn.net/liqi_q/article/details/78465949 ssh-keygen -R ip
- Navicat远程连接不上mysql解决方案
一.can‘t connect to MySql server on ‘47.93.X.X’ 这是因为mysql端口被防火墙拦截,需用linux执行如下指令: 1.#/sbin/iptables -I ...
- lvs的负载均衡测试
近来工作闲暇之余,知道自己的知识欠缺,就在网上找来一些学习视频进行学习,在学习的时候,按照讲课老师的讲解步骤进行配置lvs负载均衡,配置环境如下图: 客户端是我本机的虚拟网卡vmnet8 lvs调度器 ...
- 【译】在Transformer中加入相对位置信息
目录 引言 动机 解决方案 概览 注释 实现 高效实现 结果 结论 参考文献 本文翻译自How Self-Attention with Relative Position Representation ...
- Ubuntu 16.04下配置intel opencl环境
一. 靠谱的安装教程 1. 官网教程 https://software.intel.com/en-us/articles/sdk-for-opencl-2019-gsg,打开后往下拉到[4. Prod ...
- 如何在ubuntu中安装php
如何在ubuntu中安装php 情衅 | 浏览 692 次 发布于2016-05-07 12:36 最佳答案 关于Ubuntu下的LAMP配置步骤: 首先要安装LAMP 就是Apache,PH ...
- 图论.DP
见题: 看一眼,就知道是个依赖性背包,于是乎就草草的打了树上DP,一交发现才20,仔细检查也没错呀,忍不住点了题解,只喵一眼看到了强联通缩点等的字样,又重新审了一遍题,发现这句话理解有偏差:软件i只有 ...
- nginx 做数据仓库时,location 404 Not Found,发现找不到要用的数据报:Not Found
背景: 获得远程机器某个目录下的数据文件 方案:使用Nginx配置 1./home/ftp/www/ 下面有images 文件夹,为了访问images下面文件,配置Nginx如下: location ...
- ESP8266 01S WIFI 网络
ESP8266是一款超低功耗的UART-WiFi 透传模块,拥有业内极富竞争力的封装尺寸和超低能耗技术,专为移动设备和物联网应用设计,可将用户的物理设备连接到Wi-Fi 无线网络上,进行互联网或局域网 ...