• python之shutil模块


    shutil模块是进行文件夹或者文件的拷贝,压缩,重命名等操作的第三方模块

    下面我们来介绍一下shutil模块

    1、shutil.copyfileobj,拷贝文件的内容

    src = "c:/tmp/a_old.txt"
    det = "c:/tmp/a_new.txt"
    shutil.copyfileobj(open(src,"r"),open(det,"w"))
    
    #执行上面这个命令,我们可以看到新建了一个a_new的文件,并把a_old中的内容拷贝到a_new中
    

    2、shutil.copyfile,拷贝文件

    shutil.copyfile(src,det)
    
    #执行上面这个命令,我们可以看到新拷贝了一个a_new的文件
    

    3、shutil.copymode,拷贝文件权限,其他信息比如内容,组,用户信息均不变

    det = "c:/tmp/a_new_mode.txt"
    shutil.copymode(src,det)
    #使用这个命令,det要首先创建一个文件,我们可以看到这个文件的内容未变化
    

    4、shutil.coypstat,拷贝文件的状态信息,这个命令也需要先创建然后一个文件,然后拷贝状态信息到目的文件,包括mode bits, atime, mtime, flags这些信息

    det = "c:/tmp/a_new_stat.txt"
    shutil.copystat(src,det)
    

    5、shutil.copy,拷贝文件和权限

    det = "c:/tmp/a_copy.txt"
    shutil.copy(src,det)
    

    6、shutil.copy2,拷贝文件和状态信息

    det = "c:/tmp/a_copy2.txt"
    shutil.copy2(src,det)
    

    7、shutil.copytree,进行递归拷贝,默认软连接不拷贝

    # shutil.copytree(src,des,symlinks=None,ignore=None)
    #最简单的用户,进行递归拷贝,des这个文件夹要不存在,才可以执行成功,这个是拷贝a目录下的文件,而不会拷贝a这个目录本身
    src = "c:/a"
    dst = "c:/4"
    # shutil.copytree(src,dst)
    

    8、shutil.retree,递归删除文件

    src = "c:/3"
    shutil.rmtree(src)
    

    9、shutil.move,递归的移动文件或者目录,原文件或者目录就不存在了

    # shutil.move()
    # src = "c:/4"
    # shutil.move(src,"c:/4_new")
    
    # src = "C:/4_new/b/c/d.txt"
    # dst = "C:/4_new/f.txt"
    # shutil.move(src,dst)
    

    10、shutil.make_archive,压缩文件夹

    # 下面是make_archive的参数
    # base_name 压缩的目录或者名称,如果只有名称,则会在把压缩的文件放在当前目录
    # format 压缩包的种类,zip tar bztar gztar
    # root_dir 要压缩的文件夹路径
    # owner 用户,默认是当前用户
    # group 组,默认是当前组
    # logger 用于记录日志文件,通常在logging.Logger对象
    
    
    r = shutil.make_archive(base_name="e:/new/xxx",format="zip",root_dir="C:/2/")
    print(r)
    # e:
    ewxxx.zip
    # 这个命令的意思就是
    # 压缩C:/2/这个目录下的所有文件夹和文件,然后创建zip压缩包,把zip压缩包放在e:/new/目录下,重命名为xxx,返回的值就是base_name的值
    

    压缩的例子和支持的压缩包的格式

    import shutil
    import os
    
    
    # for i in dir(shutil):
    #     print(i)
    
    
    print(os.path.basename(os.path.abspath(__file__)))
    
    file_path = os.path.dirname(os.path.abspath(__file__))
    
    src_file = file_path + "\" + "xxx" + "." + "py"
    # des_file = file_path + "\" + "xxx_bak" + "." + "py"
    
    
    base_name = file_path + "\" + "压缩包"
    format_type_list  = ["zip","tar","gztar","bztar","xztar"]
    
    root_dir = file_path
    
    for format_type in format_type_list:
        for i in range(1000):
            base_name = file_path + "\" + "压缩包" + str(i)
            shutil.make_archive(base_name=base_name,format=format_type,root_dir=root_dir)
    

      

  • 相关阅读:
    MySQL锁
    mysql服务性能优化—my.cnf配置说明详解
    springmvc请求参数获取的几种方法
    Linux mysql 添加远程连接
    Linux 操作 mysql
    Linux 安装 mysql 转 http://www.cnblogs.com/fnlingnzb-learner/p/5830622.html
    linux 下 安装nginx
    dubbo 实战总结
    分布式事务的几种方式
    精巧好用的DelayQueue 转
  • 原文地址:https://www.cnblogs.com/bainianminguo/p/7141029.html
Copyright © 2020-2023  润新知