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 必须是不存在的

浙公网安备 33010602011771号