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模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文 ...
随机推荐
- Netty从入门到精通到放弃
有时间想记录一下关于Netty的知识. 第一课:传统IO的特点. package com.example.aimei.controller; import java.io.InputStream; i ...
- jpa table主键生成策略
用 table 来生成主键详解 它是在不影响性能情况下,通用性最强的 JPA 主键生成器.这种方法生成主键的策略可以适用于任何数据库,不必担心不同数据库不兼容造成的问题. initialValue不起 ...
- eclipse编译器显示的文件名乱码,活动标签乱码(已解决)
在公司电脑上安装了最新eclipse版本却发现文件名会乱码,如下所示,重新安装仍存在问题. 解决方法: 打开菜单Window->Preferences 打开选项General->Appe ...
- 计算系统中互联设备Survey
Survey of Inter-connects in computer system 姚伟峰 http://www.cnblogs.com/Matrix_Yao/ https://github.co ...
- ceph-deploy部署过程
[root@ceph-1 my_cluster]# ceph-deploy --overwrite-conf osd create ceph-1 --data data_vg1/data_lv1 -- ...
- python学习Day11 函数的参数列表
复习 什么是函数? 具体特定功能的代码块 - 特定功能代码作为一个整体,并给该整体命名,就是函数 函数的优点 : 1.减少代码的冗余,2.结构清晰,可读性强 3.具有复用性,开发效率高,维护成本高 如 ...
- vue---mint-ui组件loadmore(上拉加载,下拉刷新)
1. 先安装mint-ui 2. 在main.js中引入mint-ui的css样式和组件 import "mint-ui/lib/style.css"; import {Loadm ...
- redis 开机启动
使用chkconfig开机启动redis. 把redis初始脚本拷贝到/etc/init.d/下面. #cd /usr/local/redis/redis-2.6.16/utils # cp redi ...
- antd-react-mobile(踩坑记录)
1.按照官网步骤进行, $ npm install -g create-react-app # 注意:工具会自动初始化一个脚手架并安装 React 项目的各种必要依赖,如果在过程中出现网络问题,请尝试 ...
- Excel vba:批量生成超链接,添加边框,移动sheet等
Excel vba 操作 批量生成sheet目录并添加超链接 Sub Add_Sheets_Link() 'Worksheets(5)为清单目录页 '在sheet页上生成sheet页名字并超链接 To ...