十六、shutil - 处理文件、文件夹的压缩和解压

一、def copyfileobj(fsrc, fdst, length=16*1024)

  将文件内容从一个文件copy到另外一个文件。 传递是文件句柄

1 import shutil
2 shutil.copyfileobj(open('new1.xml','r',encoding = 'utf-8'),open('new2.xml','w',encoding = 'utf-8'))

 

二、def copyfile(src, dst, *, follow_symlinks=True)

 进行文件copy,传递的是文件名称

1 import shutil
2 shutil.copyfile('new1.xml','new2.xml')

三、def copymode(src, dst, *, follow_symlinks=True)

 仅仅copy文件的权限。 文件用户、组等均保持不变

1 import shutil
2 shutil.copystat('new1.xml','new2.xml')

四、def copy(src, dst, *, follow_symlinks=True)

1 #copy文件和权限
2 import shutil
3 shutil.copy('new1.xml','new2.xml')
4 
5 #copy文件和状态信息
6 import shutil
7 shutil.copy2('new1.xml','new2.xml')

 

五、递归copy 文件夹内容

 

1 import shutil
2 
3 shutil.copytree('1','floder2', ignore=shutil.ignore_patterns('*.pyc','tmp'))
4 
5 #如果源文件是一个快捷方式,symlinks 指控是否copy还是只创建连接,还是通过源快捷方式去copy 源快捷方式的源文件
6 shutil.copytree('1', 'f3', symlinks=False, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))

 

 六、递归删除文件

1 import shutil
2 
3 shutil.rmtree('1')

 

七、 move 文件夹

1 import shutil
2 shutil.copytree('floder2','f3')
3 shutil.move('f3','floder2')

 八、压缩文件夹

   摘抄自老师博客

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar

创建压缩包并返回文件路径,例如:zip、tar

    • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
      如:www                        =>保存至当前路径
      如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
    • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    • root_dir: 要压缩的文件夹路径(默认当前目录)
    • owner: 用户,默认当前用户
    • group: 组,默认当前组
    • logger: 用于记录日志,通常是logging.Logger对象
1 import shutil
2 
3 #指定路径,压缩到指定目录
4 ret = shutil.make_archive('d:\ddd','gztar',root_dir = 'd:\python')
5 
6 #不指定路径,压缩到当前目录
7 ret = shutil.make_archive('ddd','gztar',root_dir = 'd:\python')

 

九、 zipfile  tarfile

   shutil 能进行压缩主要是因为调用了zipfile功能

 

   

 1 import zipfile
 2 
 3 #压缩
 4 #在当前目录创建一个zip包
 5 z = zipfile.ZipFile('aa.zip','w')
 6 z.write('a1.py')
 7 z.write('d:\python')
 8 z.close()
 9 
10 #追加一个文件
11 z = zipfile.ZipFile('aa.zip','a')
12 z.write('floder2')
13 
14 #解压
15 
16 z.extractall()
17 z.close()
18 
19 #得到namelist
20 namelist = z.namelist()
21 print(namelist)
22 
23 #解压单独文件
24 z.extract('a1.py')

 

  tar 压缩和解压

 1 import tarfile
 2 
 3 #压缩
 4 tar = tarfile.open('bb.tar','w')
 5 tar.add('a1.py',arcname = 'an.py')
 6 tar.close()
 7 
 8 #解压
 9 tar = tarfile.open('bb.tar','r')
10 tar.extractall()
11 tar.close()
12 
13 #单独解压
14 tar = tarfile.open('bb.tar','r')
15 mem = tar.getmember()
16 print(mem)
17 tar.extract('a1.py')

 

posted @ 2016-06-16 21:47  咖啡茶  阅读(198)  评论(0)    收藏  举报