shutil是一个高级的文件、文件夹、压缩包的处理模块
常用的方法:
shutil.copyfileobj(fsrc,fdst[,length])
用途:将文件内容拷贝到另一个文件中,可以部分内容拷贝
注意,由于是作为object的拷贝,要求文件必须是打开状态,并且,fdst需要有可写状态
import shutil
f1 = open('test1.txt','r')
f2 = open('test2.txt','w')
shutil.copyfileobj(f1,f2)
shutil.copyfile(src,dst)
用途:拷贝文件
import shutil
shutil.copyfile('test1.txt','test2.txt')
直接拷贝,不需要打开文件
shutil.copy(src,dst)
用途:拷贝文件
import shutil
shutil.copy('test1.txt','test2.txt')
相对于copyfile,copy会将用户原本的权限进行复制,但是所属的组、用户不进行copy
shutil.copymode(src,dst)
用途:仅拷贝权限,内容、组、用户均不变
shutil.copystat(src,dst)
用途:拷贝状态信息,包括:mode bits、atime、mtime、flags
shutil.copytree(src,dst,symlinks=False,ignore=None)
用途:递归的copy文件
shutil.rmtree(path[,ignore_errors[,onerror]])
用途:递归的删除文件
shutil.move(src,dst)
用途:递归的移动文件
shutil.make_archive(base_name,format,...)
用途:创建压缩包并返回文件路径,例如:zip、tar
base_name:压缩包的文件名,也可以是压缩包的路径,只是文件名时,保存在当前目录,否则保存在指定目录
format:压缩包的格式:zip、tar,bztar、gztar
root_dir:压缩包的文件夹路径(默认当前路径)
owner:所属用户
group:所属组
logger:用于记录日志,是logging.logger对象
shutil对于压缩包的处理,实际上是通过调用ZipFile和TarFile这2个模块来进行的:
import zipfile
z = zipfile.ZipFile(r'e:\test\test.zip','w')
z.write(r"d:\work\closers")
z.close()
使用zipfile的时候,要注意的是,zipfile只能压缩文件,不能压缩目录
import tarfile
t = tarfile.open(r'e:\test\tar_test2.tar','w')
t.add(r'd:\work\closers',arcname='c') #如果不指定arcname,那么会使用绝对路径,否则会只用arcname作为压缩的目录名称
t.close()