shutil 对压缩包的处理是调用ZipFile和TarFile两个模块来进行的
zipfile 压缩解压缩
tarfile 压缩解压缩
shutil.copyfileobj(fsrc,fdest[,length]) #将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open('old.xml','r'),open('new.xml','w')) shutil.copyfile(src,dst) #拷贝文件,目标文件无需存在 shutil.copyfile('f1.log','f2.log') shutil.copymode(src,dst) #仅拷贝文件权限,内容,用户,组均不变,目标文件必须存在 shutil.copymode('f1.log','f2.log') shutil.copystat(src,dst) #仅拷贝状态的信息,包括:mode bits,atime,mtime,flags,目标文件必须存在 shutil.copystat('f1.log','f2.log') shutil.copy(src,dst) #拷贝文件和权限 import shutil shutil.copy('f1.log','f2.log') shutil.copy2(src,dst) #拷贝文件和状态信息 import shutil shutil.copy2('f1.log','f2.log') shutil.ignore_patterns(*patterns) shutil.copytree(src,dst,symlinks=False,ignore=None) #递归的去拷贝文件夹, import shutil shutil.copytree('folder1','folder2',ignore=shutil.ignore_patterns('*.py','tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除;拷贝软链接 shutil.rmtree(path[,ignore_errors[,onerror]]) #递归的去删除文件 import shutil shutil.rmtree('folder') shutil.move(src,dst) #递归的去移动文件,类似mv命令,其实就是重命名 import shutil shutil.move('folder1','folder3') shutil.make_archive(base_name.format,...) #创建压缩包并返回文件路径,例如:zip.tar #base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,保存至当前目录,否则保存到指定路径,如:data.bak 保存至当前路径,/tmp/data.bak保存至/tmp #format: 压缩包种类,zip,tar,bztar,gztar #root_dir: 要压缩的文件夹路径(默认当前目录) #owner: 用户,默认当前用户 #group: 组。默认当前组 #logger: 用于记录日志,通常是logging.Logger对象 #将/data下的文件打包放置当前程序目录 import shutil ret=shutil.make_archive('data.bak','gztar',root_dir='/data') #将/data下的文件打包放置/tmp目录 import shutil ret=shutil.make_archive('/tmp/data.bak','gztar',root_dir='/data') #解压缩: zipfile 压缩解压缩 tarfile 压缩解压缩 import tarfile #压缩,打开文件/tmp/wei.tar,将文件/test1/a.py和/test1/b.py添加进去 t=tarfile.open('/tmp/wei.tar','w') t.add('/test1/a.py',arcname='a.bak') t.add('/test1/b.py',arcname='a.bak') t.close() #解压缩,将/tmp/wei.tar解压到/wei下 t=tarfile.open('/tmp/wei.tar','r') t.extractall('/wei') t.close()