shutil是一个高级的文件、文件夹、压缩包、处理模块
shutil.copyfileobj(fsrc,fdes,length) 将文件内容拷贝到另一个文件中,可以只拷贝部分内容,需要我们自行打开文件对象进行copy
shutil.copyfile(fsrc,fdes) 复制文件,我们只需要传入文件名称即可进行复制,不用自行预先打开,等于创建一个新的文件,把老文件写入到新文件中然后关闭,新创建的文件权限和属主等信息遵循操作系统规定
shutil.copymode(src,des) 复制文件权限,既把src文件的权限复制给 des文件,只改变权限,不改变其他比如属组,内容等(des文件必须存在)
shutil.copystat(src,des) 复制文件的权限,还包括,atime,mtime,flags等信息,不改变文件内容(des需存在)
shutil.copy2(src,des) 复制文件的同时复制权限信息(等于shutil.copyfile + shutil.copystat)
shutil.copytree(des,src) 递归复制文件,类似于copy -r
shutil.rmtree(des) 递归的删除文件,类似于 rm -rf
shutil.move(src,'des) 移动文件/目录,类似于mv 命令
shutil.make_archive('压缩后的文件名称',‘压缩类型’,‘源目录’,‘other parameter’) 对源目录进行压缩(只能对目录进行压缩)
名称可以是直接是文件名或者,如果是路径的话,默认最后一个名称为包名
压缩类型有:zip、tar、bztar、gztar
other_paramter:其他参数有,指定压缩后的用户,用户组,logger记录日志等
扩展:make_archive其实是调用zipfile和tarfile两个模块来完成压缩和解压缩的
zipfile模块压缩:
z = zipfile.ZipFile('test.zip','w') -->创建一个压缩文件,以写模式打开
z.write('a.log') -->把要压缩的文件名称,写入压缩文件
z.write('b.log')
z.close() -->关闭压缩文件
zipfile模块解压缩:
z = zipfile.ZipFile('test.zip','r') -->打开压缩文件
z.extractall() -->解压缩,这里可以设置解压地址
z.close()
tarfile模块压缩:
t = tarfile.open('test.tar','w')
tar.add('test.txt')
t.close()
tarfile模块解压缩:
t = tarfile.open('123.tar','r')
t.extectall() -->解压tar文件
t.close()