shutil 模块详解

shutil 模块提供了一些高级的 针对文件或者文件集合的操作。有一些操作支持文件的复制和删除,同时,一些针对独立的文件的操作也可以在OS 模块中找到。

常见的函数

--shutil.copystat(src,dst)  复制权限,文件的最后访问时间,最后修改时间,(文件不复制,我都不知道有什么用)。

--shutil.copymode(src,dst)  复制权限 (文件不复制,我都不知道有什么用)。

--shutil.copy(src,dst)  --复制文件 ,如果目的地 是 个文件夹,则在文件在中创造同名文件,如果文件夹中存在同名文件,则覆盖。

1 >>> shutil.copy("E:\\a\\1.txt","E:\\")
2 # 目的地是 文件夹 则在文件中 创造同名文件
3 >>> shutil.copy("E:\\a\\1.txt","E:\\b")
4 # 文件中中存在同名文件,则覆盖
5 >>> shutil.copy("E:\\a\\1.txt","E:\\b")

--shutil.copy2(src,dst)  复制文件 在copy 的基础上,把文件的访问权限,最后访问,修改时间也复制过来。

--shutil.copyfile(src,dst)  和 copy 的区别是  src 和 dst 必须是 完整的明确的文件名,不能是 文件夹,如果src 和 dst 是同样的路径,则会抛出异常,且 dst 的路径必须是可写的,否则会抛出IOErr 异常,如果dst 已经存在,则会覆盖。

#目的地是文件夹 报错
>>> shutil.copyfile("E:\\b\\3.txt","E:\\a") Traceback (most recent call last): File "<pyshell#21>", line 1, in <module> shutil.copyfile("E:\\b\\3.txt","E:\\a") File "C:\Python27\lib\shutil.py", line 83, in copyfile with open(dst, 'wb') as fdst: IOError: [Errno 13] Permission denied: 'E:\\a'
#同名
>>> shutil.copyfile("E:\\b\\3.txt","E:\\b\\3.txt") Traceback (most recent call last): File "<pyshell#22>", line 1, in <module> shutil.copyfile("E:\\b\\3.txt","E:\\b\\3.txt") File "C:\Python27\lib\shutil.py", line 69, in copyfile raise Error("`%s` and `%s` are the same file" % (src, dst)) Error: `E:\b\3.txt` and `E:\b\3.txt` are the same file >>> shutil.copyfile("E:\\b\\3.txt","E:\\b\\4.txt")
#覆盖
>>> shutil.copyfile("E:\\b\\3.txt","E:\\b\\4.txt")

--shutil.ignore_patterns(*patterns)  ???

--shutil.copytree(src,dst,symlinks=False,ignore=None)   递归的复制src目录,dst地址必须是存在的,他会去创建并且会丢失父目录,文件件的权限和时间的复制用的是 copystat(),文件放的复制则用的是 copy2().

--shutil.rmtree(path[,ignore_errors[,onerror]])  删除整个目录树,path 必须是一个指向文件夹的,但不能是指向一个文件夹的链接(或者说是快捷方式),ignore_errors = true,则在删除过程中引发的异常则会被忽略

--shutil.move(src,dst) 递归的把文件或者文件夹从src 移动到 dst,如果dst 是个文件夹或者文件夹的超链接,则也会把src 移动到文件夹里面,dst 必须是不存在的

 

posted @ 2017-05-04 23:11  大愚者  阅读(420)  评论(0)    收藏  举报