Python学习之路(29)——shutil模块:高级文件操作

shutil模块,High-level file operations。从字面意义上来看,提供了一系列的高级文件操作。特别是针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作。(对单个文件的操作参考os模块)

在类UNIX系统中尤其重要。

 

一、复制文件内容

shutil.copyfileobj(fsrc, fdst[, length]),其中length指定缓冲区大小。

注意:目标地址要具备可写权限。

>>> import shutil
>>> f1 = open('file1.txt', encoding = 'utf-8')
>>> f2 = open('file2.txt', 'w', encoding = 'utf-8')
>>> shutil.copyfileobj(f1, f2, length = 3)

  

二、复制文件

shutil.copyfile(src, dst),复制文件src到文件或目录dst。如果dst是目录,使用src相应的文件名创建(或覆盖),权限位也会复制。

注意:目标地址要具备可写权限。

>>> shutil.copy('file1.txt', 'file_1.txt')
'file_1.txt'
>>> shutil.copy('file1.txt', r'C:\Python35\file_1')
'C:\\Python35\\file_1\\file1.txt'
>>> shutil.copy('file1.txt', r'C:\Python35\file_1\file_1.txt')
'C:\\Python35\\file_1\\file_1.txt'

  

三、复制文件权限(最后访问时间、最后修改时间)

shutil.copymode(src, dst),仅复制权限,其他的如内容、组、用户均不变。

shutil.copystat(src, dst),复制权限、最后访问时间、最后修改时间。

shutil.copy(src, dst),复制文件和权限。(相比copyfile,连同文件本身的读写可执行权限也复制了)

shutil.copy2(src, dst),复制文件和权限,文件和状态信息。(在copy的基础上再赋值文件最后访问时间和修改时间)

>>> shutil.copymode('file1.txt', 'file2.txt')
>>> shutil.copystat('file1.txt', 'file3.txt')
>>> shutil.copy('file1.txt', 'file4.txt')
'file4.txt'
>>> shutil.copy('file1.txt', 'file5.txt')
'file5.txt'

  

四、复制文件夹、删除文件夹

shutil.copytree(src, dst, symlinks = False, ignore = None),递归复制文件夹,如果symlinks是True,则复制文件夹时将保持文件夹下的符号连接,反之则将在复制的文件夹下生产物理副本来替代符号连接。

shutil.rmtree(src),递归删除文件夹(删除本文件夹及文件夹内所有内容)

>>> shutil.copytree('file_1', 'file_2')
'file_2'
>>> shutil.rmtree('file_2')

  

五、移动或重命名

shutil.move(src, dst),移动文件夹或文件,或者重命名。

>>> shutil.move('file_1.txt', 'filexxx.txt')
'filexxx.txt'

  

六、产生压缩文件

shutil.make_archive(basename, format, root_dir),将目标文件夹按照format的格式进行压缩,压缩包名称为"basename.format"

>>> shutil.make_archive('filexxx', 'zip', r'C:\Python35\file_1')
'C:\\Python35\\filexxx.zip'

  

七、其他方法

shutil.disk_usage(path),返回对给定路径的磁盘使用量分析。

shuil.chown(path, user = None, group = None),对给定路径改变owner和group。

posted on 2018-03-12 15:03  nicolas_Z  阅读(185)  评论(0)    收藏  举报

导航