zoukankan      html  css  js  c++  java
  • python- shutil 高级文件操作

    题记

    shutil模块提供了大量的文件的高级操作。特别针对文件拷贝和删除,主要功能为目录和文件操作以及压缩操作。对单个文件的操作也可参见os模块。

    拷贝文件

    shutil.copyfile

    复制文件内容(不包含元数据)从src到dst。 DST必须是完整的目标文件名;拷贝目录参见shutil.copy()。如果src和dst是同一文件,就会引发错误shutil.Error。dst必须是可写的,否则将引发异常IOError。如果dst已经存在,它会被替换。特殊文件,例如字符或块设备和管道不能使用此功能,因为copyfile会打开并阅读文件。 src和dst的是字符串形式的路径名。

    shutil.copyfile("shutil_copyfile.py","shutil_copyfile.py.copy")
    

    copyfile()调用了底函数层copyfileobj()。

    shutil.copyfileobj

    复制文件内容(不包含元数据)从类文件对象src到类文件对dst。可选参数length指定缓冲区的大小,负数表示一次性读入。默认会把数据切分成小块拷贝,以免占用太多内存。注意:拷贝是从fsrc的当前文件开始。

    copyfileobj(fsrc, fdst, length=16*1024)
    

    shutil.copy(src, dst)

    复制文件src到文件或目录dst。如果dst是目录,使用src相同的文件名创建(或覆盖),权限位也会复制。src和dst的是字符串形式的路径名。

    def copy(src, dst):
        """Copy data and mode bits ("cp src dst").
    
        The destination may be a directory.
    
        """
        if os.path.isdir(dst):
            dst = os.path.join(dst, os.path.basename(src))
        copyfile(src, dst)
        copymode(src, dst)
    

    shutil.copy2(src, dst)

    类似shutil.copy,元数据也复制,实际上先调用shutil.copy,然后使用copystat。这类似于Unix命令cp -p。

    def copy2(src, dst):
        """Copy data and all stat info ("cp -p src dst").
    
        The destination may be a directory.
    
        """
        if os.path.isdir(dst):
            dst = os.path.join(dst, os.path.basename(src))
        copyfile(src, dst)
        copystat(src, dst)
    

    拷贝文件元数据

    当由UNIX下创建文件默认基于umask设置权限,copymode()可以复制权限。

    shutil.copymode(src, dst)

    从SRC复制权限位到DST。该文件的内容,所有者和组不受影响。src和dst的是字符串形式的路径名。

    shutil.copystat(src, dst)

    从src复制权限位,最后访问时间,最后修改时间,flag到dst。该文件的内容,所有者和组不受影响。 src和dst的是给定的字符串路径名。

    opystat('shutil_copystat.py', 'file_to_change.txt')
    

    压缩解压

    2.7以后的版本提供了压缩和解压功能。

    格式:shutil.make_archive(base_name, format[, root_dir[, base_dir, verbose, dry_run, owner, group, logger])

    base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,

    format:	压缩包种类,“zip”, “tar”, “bztar”,“gztar”
    root_dir:	要压缩的文件夹路径(默认当前目录)
    owner:	用户,默认当前用户
    group:	组,默认当前组
    logger:	用于记录日志,通常是logging.Logger对象
    

    实例如下:

    ret = shutil.make_archive("backup","tar",root_dir="/home/www/") #将/home/www目录下的文件进行备份,生成backup.tar的文件,其中tar为压缩包的后缀,www为压缩包文件名
    

    要想拷贝文件时间戳,需要copystat。

    更多入门教程可以参考:[http://www.bugingcode.com/python_start/] (http://www.bugingcode.com/python_start/)

  • 相关阅读:
    Numpy基础
    Numpy基础
    Java复习之数组
    Java复习之数组
    Python基础2
    第六章 3 列表生成式
    第六章 1 列表(创建,特点)
    IEEE(电气和电子工程师协会)会议排名
    第五章 3 流程控制语句break和continue
    第五章 2 循环结构
  • 原文地址:https://www.cnblogs.com/bugingcode/p/8276486.html
Copyright © 2011-2022 走看看