高级的文件、文件夹、压缩包处理模块
shutil.copyfileobj() 将文件内容拷贝到另一个文件中
shutil.copyfile() 拷贝文件
import shutil
shutil.copyfileobj(open('day1.py',encoding='utf-8'),open('111.py','w',encoding='utf-8'))
shutil.copyfile('day1.py','123.py')
shutil.copymode() 仅拷贝权限
shutil.copystat() 仅拷贝状态的信息
shutil.copy() 拷贝文件和权限
shutil.copy2() 拷贝文件和转态
shutil.copytree(‘’,’’,ignore=shutil.ingore_patterns(“.py,new”)) 递归地去拷贝文件夹
shutil.rmtree() 递归地去删除文件
shutil.move(A,B) A移动文件到B下
shutil.make_archive(base_name(压缩包的名字或者给一下要保存的路径),format(压缩包的类型:zip,tar,bztar,gztar),root_dir(要压缩的文件夹路径),owner(用户,默认当前用户),group(组,默认当前组),logger(用于记录日志,通常是logging.Logger对象))
import shutil
shutil.make_archive('tang1','zip','../模块')
import zipfile
import os
b = []
a = zipfile.ZipFile("xxx1.zip",'w')
a.write('day2.py')
for roots,dirs,files in os.walk("../函数"): # 遍历这个目录,目录下的每一个文件夹(包含它自己)
,产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】
for name in files:
b.append(os.path.join(roots,name)) # 拼接路径+文件名
for i in b:
a.write(i)
print(b)
a.close()
# 解压
a = zipfile.ZipFile("xxx1.zip",'r')
a.extractall("tt")
方法与上面类似
import tarfile
a = tarfile.open("a1.tar", "w")
'''
TarFile.add(name, arcname=None, recursive=True, exclude=None, *, filter=None)
将指定文件加入包内。
arcname参数用于变换路径和文件名。
默认情况下,文件夹会被递归的加入包内,除非recursive参数设为False。
filter参数指向一个方法,该方法用来过滤哪些文件不会被打入包内,不被打包的就返回个None,会的就返回tarinfo本身,
该方法为3.2版本新增,同时废弃原有的exclude方法。
'''
a.add('day1.py',arcname='day1___1.py')
a.close()
# 解压
a = tarfile.open("a1.tar", "r")
a.extractall("xx")
a.close()