#拷贝文件,可指定长度,fsrc和fdst都是一个文件对象 def copyfileobj(fsrc, fdst, length=16*1024) shutil.copyfileobj(open("ss1", "r"), open("ss2", "w"), length=1024) # 拷贝文件,dst必须可写,存在则覆盖 def copyfile(src, dst, *, follow_symlinks=True) shutil.copyfile("ss1", "ss2") #拷贝文件和权限,先copyfile后copymode def copy(src, dst, *, follow_symlinks=True) shutil.copy("ss1", "ss2") #拷贝文件和所有状态信息,如修改时间等 def copy2(src, dst, *, follow_symlinks=True) shutil.copy2( src, dst) #只拷贝状态信息,包括权限,组,用户,时间等 def copystat(src, dst, *, follow_symlinks=True) shutil.copystat(src, dst) #只拷贝权限信息,不更改文件内容,组和用户 def copymode(src, dst, *, follow_symlinks=True) shutil.copymode(src, dst) #移动或重命名 def move(src, dst, copy_function=copy2) shutil.move(src, dst) #移动文件或重命名 #递归的复制文件内容及状态信息 def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False) shutil.copytree(olddir, newdir, ignore=ignore_patterns('*.pyc', 'tmp*')) #忽略.pyc和.tmp结尾的文件 #递归删除一个目录以及目录内的所有内容 def rmtree(path, ignore_errors=False, onerror=None) shutil.rmtree(src) #压缩打包 def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0, dry_run=0, owner=None, group=None, logger=None) base_name: 压缩打包后的文件名或者路径名 format: 压缩或者打包格式 "zip", "tar", "bztar"or "gztar" gztar:gzip压缩的tar文件 bztar:bzip2格式的tar文件 tar:未压缩的tar文件 zip:ZIP文件 root_dir : 将哪个目录或者文件打包(也就是源文件) shutil.make_archive('tarball','tar',root_dir='/root/data')