从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件
  • 首页
  • Python
  • 33、 shutil模块 zipfile模块 和 tarfile模块

33、 shutil模块 zipfile模块 和 tarfile模块

发布:蔺要红05-22分类: Python


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

shutil.copyfileobj(fsrc, fdst[, length])  将文件内容拷贝到另一个文件中

 
# -*- coding:utf-8 -*-
import shutil
f1 = open("test.py","r")
f2 = open("new_test.py","w")
shutil.copyfileobj(f1,f2)  #复制test.py,到new_test.py
 

shutil.copyfile(src, dst)  拷贝文件

 
shutil.copyfile('test.py','new_test.py')#或者全路径shutil.copyfile("/home/1.txt",'/home/2.txt')


shutil.copymode(src, dst)     仅拷贝权限。内容、组、用户均不变
shutil.copystat(src, dst)     拷贝状态的信息,包括:mode bits, atime, mtime, flags
shutil.copy(src, dst)         拷贝文件和权限
shutil.copy2(src, dst)        拷贝文件和状态信息

 

shutil.copytree(src, dst, symlinks=False, ignore=None)  递归的去拷贝文件

 
shutil.copytree('my_proj','p2',ignore=shutil.ignore_patterns('*.html','__init__.py')) #排除某些文件
shutil.copytree('my_proj','p2',symlinks=False,ignore=shutil.ignore_patterns('*.html','__init__.py')) #是否复制软连接
 

shutil.rmtree(path[, ignore_errors[, onerror]]) 递归的去删除文件  ignore_errors=False忽略错误

 
rmtree(‘p2’, ignore_errors=False, onerror=None) #p2为文件名
 

shutil.move(src, dst) 递归的去移动文件(重命名)

 
shutil.move("p2","ppp")
 

shutil.make_archive(base_name, format,...)

创建压缩包并返回文件路径,例如:zip、tar
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,

        如:www                        =>保存至当前路径
        如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/

        format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
        root_dir: 要压缩的文件夹路径(默认当前目录)
        owner: 用户,默认当前用户
        group: 组,默认当前组
        logger: 用于记录日志,通常是logging.Logger对象
 
>>> shutil.make_archive("/usr/local/src/123","zip","/home/")#123为压缩包的名字,zip为格式,/home/为需要压缩的文件夹
'/usr/local/src/123.zip'
#注:123解压后,会直接把内从解压到当前目录
 


 

shutil 对压缩包的处理是调用 zipfile和 tarfile 两个模块来进行的,详细
 

# -*- coding:utf-8 -*-
import zipfile

#压缩

z = zipfile.ZipFile("T.zip",'w') #把如下文件打包为T.zip,但是不能递归打包,解压后生成T目录,
z.write("test.py")
z.write("lin.zip")
z.write("__init__.py")

#解压,pycharm不行,用命令行,解压后的文件夹在  进入python命令行模式  的目录

>>> z = zipfile.ZipFile("/usr/local/src/1.zip","r")
>>> z.extractall()
>>> z.close()
import tarfile

# 压缩
>>> import tarfile
>>> tar = tarfile.open('me.tar','w')
>>> tar.add("/usr/local/src/123") #打包打路径/解压后也是全路径/可以递归打包
>>> tar.add("/usr/local/src/a")
>>> tar.close()

# 解压
>>> tar = tarfile.open('me.tar','r')
>>> tar.extractall("/home/")  #解压路径
>>> tar.close()


#--------------------------------------------------------------------------

>>> tar = tarfile.open('me.tar','w')
>>> tar.add("/usr/local/src/123",arcname="123") #打包的时候只递归打包123/a  #解压的时候不带全路径,把123/a 直接解压到home目录下
>>> tar.add("/usr/local/src/a",arcname="a")
>>> tar.close()
>>> tar = tarfile.open('me.tar','r')
>>> tar.extractall("/home/") 
>>> tar.close()



 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站