shutil 模块
功能:文件/文件夹的复制,压缩处理模块
shutil.copyfileobj(fsrc,fdst[,length]):将文件内容拷贝到另一个文件中,也可以是部分内容
举例:文件复制
import shutil
# 必须先准备好读写的文件
sfile = open('func1.py',encoding='utf-8')
dfile = open('func1.py.bak','w',encoding='utf-8')
# 进行内容的复制
shutil.copyfileobj(sfile,dfile)
注意:显然以上这个方法不实用,下面的方法最实用!
shutil.copy(src,dst):直接将源文件复制到目标,包括文件权限
如:shutil.copy('/var/log/message','message')
shutil.copyfile(src,dst):直接将源文件复制到目标,不包括文件权限
shutil.copymode(src,dst):复制文件权限,用户组不变
shutil.copystat(src,dst):复制文件状态(文件的时间等属性)的信息,包括:mode bits,atime,mtime,flags
shutil.copy2(src,dst):复制文件和权限状态信息(全复制)
shutil.copytree(src,dst):复制整个目录
shutil.rmtree(src):删除目录
shutil.move(src,dst):移动文件或文件夹
shutil.make_archive(base_name,format,..):创建压缩包并返回文件路径。缺点:无法过滤。例如:zip,tar
base_name:压缩包的文件名,也可以是包路径,只是文件名时,保存到当前目录,否则保存到指定目录。
format:压缩包种类(zip,tar,bztar,gztar)
root_dir:要压缩的文件夹路径(默认当前目录)
owner:用户,默认当前用户
group:组,默认当前组
logger:用户记录日志
举例:将/var/log的文件打包放入当前目录
import shutil
ret = shutil.make_archive('wwwwww','gztar',root_dir='/var/log')
举例2:将/var/log/的文件打包放入/root/目录
ret = shutil.make_archive('root/wwww','gztar',root_dir='/var/log')
注意:以上打包为zip后,最好用zipfile模块解包。
shutil对压缩包的处理是调用ZipFile和TarFile 模块
如:使用ZipFile进行压缩和解压
import zipfile
#注意,zipfile只能压缩文件,压缩目录只有目录结构
#压缩:
z = zipfile.ZipFile('bk.zip','w')
z.write('a.log')
z.write('data.log')
z.close()
#解压
z = zipfile.ZipFile('bk.zip','r')
z.extractall()
z.close()
如:用tar进行打包(但是不压缩,压缩需要使用zipfile)
import tarfile
tar = tarfile.open('/root/your.tar','w')
#注意:这里使用了arcname,则打包后的只将log下的文件全部打包到test文件夹里,如果不带arcname参数,则打包的是路径+文件
tar.add('/var/log',arcname='test')
tar.add('/test.zip')
tar.close()