返回顶部

python之shutil模块

python之shutil模块

shutil模块——高级的文件、文件夹、压缩包处理模块

shutil 对压缩包的处理是调用ZipFile和TarFile两个模块来进行的

  • zipfile 压缩解压缩

  • tarfile 压缩解压缩

shutil.copyfileobj(fsrc,fdest[,length])   #将文件内容拷贝到另一个文件中
import shutil
shutil.copyfileobj(open('old.xml','r'),open('new.xml','w'))

shutil.copyfile(src,dst)        #拷贝文件,目标文件无需存在
shutil.copyfile('f1.log','f2.log')    

shutil.copymode(src,dst)        #仅拷贝文件权限,内容,用户,组均不变,目标文件必须存在
shutil.copymode('f1.log','f2.log')

shutil.copystat(src,dst)        #仅拷贝状态的信息,包括:mode bits,atime,mtime,flags,目标文件必须存在
shutil.copystat('f1.log','f2.log')

shutil.copy(src,dst)            #拷贝文件和权限
import shutil
shutil.copy('f1.log','f2.log')

shutil.copy2(src,dst)            #拷贝文件和状态信息
import shutil
shutil.copy2('f1.log','f2.log')

shutil.ignore_patterns(*patterns)
shutil.copytree(src,dst,symlinks=False,ignore=None)        #递归的去拷贝文件夹,
import shutil
shutil.copytree('folder1','folder2',ignore=shutil.ignore_patterns('*.py','tmp*'))    #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除;拷贝软链接

shutil.rmtree(path[,ignore_errors[,onerror]])    #递归的去删除文件
import shutil
shutil.rmtree('folder')

shutil.move(src,dst)            #递归的去移动文件,类似mv命令,其实就是重命名
import shutil
shutil.move('folder1','folder3')

shutil.make_archive(base_name.format,...)        #创建压缩包并返回文件路径,例如:zip.tar
    #base_name:压缩包的文件名,也可以是压缩包的路径。只是文件名时,保存至当前目录,否则保存到指定路径,如:data.bak 保存至当前路径,/tmp/data.bak保存至/tmp
    #format: 压缩包种类,zip,tar,bztar,gztar
    #root_dir: 要压缩的文件夹路径(默认当前目录)
    #owner: 用户,默认当前用户
    #group:  组。默认当前组
    #logger:  用于记录日志,通常是logging.Logger对象

#将/data下的文件打包放置当前程序目录
import shutil
ret=shutil.make_archive('data.bak','gztar',root_dir='/data')

#将/data下的文件打包放置/tmp目录
import shutil
ret=shutil.make_archive('/tmp/data.bak','gztar',root_dir='/data')

#解压缩:  zipfile  压缩解压缩   tarfile 压缩解压缩
import tarfile
#压缩,打开文件/tmp/wei.tar,将文件/test1/a.py和/test1/b.py添加进去
t=tarfile.open('/tmp/wei.tar','w')
t.add('/test1/a.py',arcname='a.bak')
t.add('/test1/b.py',arcname='a.bak')
t.close()

#解压缩,将/tmp/wei.tar解压到/wei下
t=tarfile.open('/tmp/wei.tar','r')
t.extractall('/wei')
t.close()

 

posted @ 2022-06-14 23:55  九尾cat  阅读(1157)  评论(0编辑  收藏  举报