三十四、python中shutil模块的介绍


'''
A.shutil:高级的文件 文件夹 压缩包 处理模块
'''

import shutil

'''
1.copyfileobj(a1,a2,lenth):将文件内容拷贝到另一个文件中
'''

shutil.copyfileobj(open('old.xml','r'),open('new.xml','w'),1)

'''
2.copyfile(a1,a2):拷贝文件
'''
shutil.copyfile('new.xml','new2.xml')

'''
3.copymode(a1,a2):拷贝文件,仅拷贝权限,内容,组,用户不变
'''
shutil.copymode('new.xml','new3.xml')

'''
4.copystat(a1,a2):拷贝状态信息
'''
shutil.copystat('new.xml','new3.xml')

'''
5.copy(a1,a2):拷贝文件内容和权限
'''
shutil.copy('new.xml','new4.xml')

'''
6.copy2(a1,a2):拷贝文件内容和状态
'''
shutil.copy2('new.xml','new5.xml')

'''
*7.copytree(a,b,symlinks=False, ignore=None):递归去拷贝文件夹,abs是文件夹,symlinks=False时为拷贝快捷方式,symlinks=True时,拷贝的是原文件夹
ignore=shutil.ignore_patterns('*.pyc','tmp'):忽略拷贝以'*.pyc','tmp'结尾和开头的文件
'''

#shutil.copytree('a','b',ignore=shutil.ignore_patterns('*.pyc','tmp'))

'''
8.rmtree(path):递归的去删除文件夹
'''
#shutil.rmtree('c')

'''
9.move(a,b):递归去移动文件,类似于mv命令,其实就是重命名
'''
#shutil.move('a','c')

'''
B.make_archive:创建压缩文件
xx.make_archive(base_name, format, ...)
创建压缩包并返回文件路径,例如:zip、tar
创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www = > 保存至当前路径
format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir: 要压缩的文件夹路径(默认当前目录)
owner: 用户,默认当前用户
group: 组,默认当前组
logger: 用于记录日志,通常是logging.Logger对象
'''

# 将 D:1122 下的文件打包放置当前程序目录
ret = shutil.make_archive("xxx",'gztar',root_dir='D:\1122')

# 将 D:1122下的文件打包放置 D:1122目录
ret = shutil.make_archive("D:\1122\xxx",'gztar',root_dir='D:\1122')

'''
C.zipfile解压缩文件
'''
import zipfile
# z=zipfile.ZipFile('xx.zip','w')
# z.write('ini')
# z.write('new2.xml')

# z.close()
#解压
z=zipfile.ZipFile('xx.zip','r')
z.extractall()


print(z.namelist()) #压缩包中的文件列表
#解压
z.extract('ini')
z.close()
'''
D.tarfile:解压缩
'''
import tarfile
#压缩
tar=tarfile.open('xxx.tar','w')
tar.add('ini',arcname='init')
tar.add('new2.xml',arcname='new22.xml')
tar.close()

#解压
tar=tarfile.open('xxx.tar','r')
#tar.extractall()
print(tar.getmembers())
tar.extract('init')
tar.close()