python模块--shutil

是一种高层次的文件操作工具,用来处理文件、文件夹和压缩包

  常用方法:

  •  copyfileobj(fsrc, fdst, length=16*1024)
    将fsrc文件中的内容复制到fdst文件中,可以设置要复制的长度,两个文件都要先打开     
import shutil

shutil.copyfileobj(open("data.txt","r"),open("newData.txt","w"))
copyfileobj
  • copyfile(src, dst, *, follow_symlinks=True) 

  将src文件中的内容复制到dst文件中,文件不需要打开  

shutil.copyfile("data.txt","newData.txt")
copyfile
  • copymode(src, dst, *, follow_symlinks=True)

  仅拷贝权限。内容、组、用户均不变

shutil.copymode('log1.log', 'log2.log')
copymode
  • copystat(src, dst, *, follow_symlinks=True)

  只复制权限、最后访问时间、最后修改时间,不会复制文件内容

shutil.copystat('log1.log', 'log2.log')
copystat
  • copy(src, dst, *, follow_symlinks=True)

  拷贝文件和权限

 

shutil.copy('log1.log', 'log2.log')
copy
  • copy2(src, dst, *, follow_symlinks=True)

 

  拷贝文件和状态信息

 

shutil.copy2('log1.log', 'log2.log')
copy2
  • copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
    ignore_dangling_symlinks=False)

  递归的去拷贝文件夹,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接(也就是快捷方式),如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接,也可以用shutil.ignore_patterns(*patterns)来忽略一些特定文件格式的文件

 

shutil.copytree('old', 'new', ignore=shutil.ignore_patterns('*.c', 'linux*'))
copytree
  • rmtree(path, ignore_errors=False, onerror=None)

  递归的去删除文件,也就是linux中的rm -r

 

shutil.rmtree('old')
rmtree
  • move(src, dst, copy_function=copy2)

  相当于linux中的mv,重命名

shutil.move('old', 'oldFile')
move
  • make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
    dry_run=0, owner=None, group=None, logger=None)

  用来压缩和解压文件

   参数:

base_name   压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
format        压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir    要压缩的文件夹路径(默认当前目录)
owner        用户,默认当前用户
group        组,默认当前组
logger        用于记录日志,通常是logging.Logger对象
View Code
shutil.make_archive("hahaha","gztar","H:\\linux编程\\basefile")
压缩文件
#将文件添加到指定的压缩包中
z=zipfile.ZipFile("hahaha.tar.gaz","w")
z.write("data.txt")
z.close()
利用zipfile模块添加特定文件到压缩包
z=zipfile.ZipFile("hahaha.tar.gaz","r")
#解压压缩包所有的文件
z.extractall()
#解压出指定的文件
z.extract("xxxxx")
利用zipfile模块解压
import tarfile

# 压缩
tar = tarfile.open('hahaha.tar','w')
#将xxx文件添加到hahaha.tar中,并且将文件名该为www
tar.add('xxx', arcname='www')
tar.close()

# 解压
tar = tarfile.open('hahaha.tar','r')
#解压所有的文件
tar.extractall() 
#解压特定的文件
tar.extract("xxx")
tar.close()
tarfile模块和zipfile模块一样

 

posted @ 2018-03-06 21:02  菜鸟也有高飞的时候  阅读(482)  评论(0编辑  收藏  举报