十六、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')

浙公网安备 33010602011771号