Day5模块-shutil模块

参考博客: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()
View Code
 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()
View Code
原文地址:https://www.cnblogs.com/wolfs685/p/6890847.html