参考博客:http://www.cnblogs.com/wupeiqi/articles/4963027.html
shutil模块是高级的文件、文件夹、压缩处理的模块。比如文件的copy、压缩等。
------------------------------------------------------------------------------------------------------------------------
1.shutil.copyfileobj(fsrc,fdst[,length]):将文件内容复制到另外一个文件中
实例:复制文件内容到新文件中
a.打开文件的方式去复制
import shutil
f1=open("random.py")
f2=open("random new.py","w")
shutil.copyfileobj(f1,f2)
b.不打开文件的方式去复制
>>> import shutil
>>> shutil.copy(r"c:提高.txt","test") #复制文件和权限
'test'
>>> shutil.copy2(r"c:提高.txt","test") #复制文件和状态
>>>shutil.copyfile(r"C:提高.txt","test") #复制文件
区别:copy和copyfile都是复制文件,但copy复制了文件的属主属组,而copyfile却没有。
------------------------------------------------------------------------------------------------------------------------
2.shutil.copytree(SRC,DST,symlinks=False,ignore=None) 递归的复制文件,也可以复制目录,相当于linux下的cp -r
3.shutil.rmtree(path[,ignore_errors[,oneerror]]) 递归删除文件
4.shutil.move(src,dst) 递归的移动文件
5.shutil.make_archive(base_name,format,...) 创建压缩包并返回路径,例如zip、tar....
* base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
* 如:www =>保存至当前路径
* 如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
* format:压缩包种类,“zip”, “tar”, “bztar”,“gztar”
* root_dir:要压缩的文件夹路径(默认当前目录)
* owner:用户,默认当前用户
* group:组,默认当前组
* logger:用于记录日志,通常是logging.Logger对象
实例1:
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录 、
import shutil
ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
#将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
import shutil
ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
实例2:
把D盘下的简历,打包成c盘下test.zip压缩包
>>> import shutil
>>> shutil.make_archive(r"c: est",format="zip",root_dir=r"D:简历")
'c:\test.zip'
shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:
1 import zipfile 2 3 # 压缩 4 z = zipfile.ZipFile('laxi.zip', 'w') 5 z.write('a.log') 6 z.write('data.data') 7 z.close() 8 9 # 解压 10 z = zipfile.ZipFile('laxi.zip', 'r') 11 z.extractall() 12 z.close()
1 import tarfile 2 3 # 压缩 4 tar = tarfile.open('your.tar','w') 5 tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip') 6 tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip') 7 tar.close() 8 9 # 解压 10 tar = tarfile.open('your.tar','r') 11 tar.extractall() # 可设置解压地址 12 tar.close()