IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]8.8 shutil--高级的文件操作

    caimouse发表于 2016-04-04 20:24:54
    love 0

    本模块主要提供了一些对文件和多个文件的高级操作,比如文件的拷贝功能、文件的删除功能。如果只是想对一个文件进行操作,使用os模块操作就可以了。不过要值得注意的一点是本模块里拷贝文件和删除文件,在有一些情况下系统的元数据没有办法拷贝和删除。

    8.8.1 目录和文件操作

    shutil.copyfileobj(fsrc, fdst[, length])

    拷贝文件类似的对象fsrc的内容到目标对象fdst。参数length是指明缓冲区的大小,如果是负数表示整个文件读取;默认值是读取一块磁盘大小的数据,不会占用太多内存。如果对文件对象操作完成之后,再想从头读取文件对象,需要调整文件对象的位置指针。

    例子:

    #python 3.4

    import shutil

     

    src = 'F:\\temp\\py\\codecs1.py'

    dst = 'F:\\temp\\py\\test888.py'

    with open(src, 'rb') as fsrc:

        with open(dst, 'wb') as fdst:

            shutil.copyfileobj(fsrc, fdst, 100)

     

    shutil.copyfile(src, dst, *, follow_symlinks=True)

    拷贝文件名称为src的内容到文件dst,返回dst文件路径。

    例子:

    #python 3.4

    import shutil

     

    src = 'F:\\temp\\py\\codecs1.py'

    dst = 'F:\\temp\\py\\test888.py'

    print(shutil.copyfile(src, dst))

    结果输出如下:

    F:\temp\py\test888.py

     

    exception shutil.SameFileError

    当调用函数copyfile()时,如果源文件与目标文件一样时,就会抛出这个异常。

     

    shutil.copymode(src, dst, *, follow_symlinks=True)

    拷贝文件的权限位,不影响文件的内容、拥有关系和组关系。

     

    shutil.copystat(src, dst, *, follow_symlinks=True)

    拷贝文件的权限位、最后访问时间、最后修改时间和标志,不影响文件的内容、拥有关系和组关系。

     

    shutil.copy(src, dst, *, follow_symlinks=True)

    拷贝文件src到文件或者目录dst。如果dst是目录,拷贝文件到目录里面。参数follow_symlinks为false,表示如果源文件是一个符号连接,目标也拷贝一个符号连接;如果为true,即使源文件是一个符号连接,也会拷贝源文件。

    例子:

    #python 3.4

    import shutil

     

    src = 'F:\\temp\\py\\codecs1.py'

    dst = 'F:\\temp\\py\\dir1'

    print(shutil.copy(src, dst))

    结果输出如下:

    F:\temp\py\dir1\codecs1.py

     

    shutil.copy2(src, dst, *, follow_symlinks=True)

    与copy函数一样的功能,只不过它会尽量拷贝所有文件相关的元数据。

     

    shutil.ignore_patterns(*patterns)

    用来创建一个忽略参数ignore,以便copytree()函数遍历文件时可以忽略的参数、文件和目录。

     

    shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)

    递归地完全地拷贝一个目录到另外一个目录。

    例子:

    #python 3.4

    import shutil

     

    src = 'F:\\temp\\py\\dir1'

    dst = 'F:\\temp\\py\\dir2\\1'

    print(shutil.copytree(src, dst))

    结果输出如下:

    F:\temp\py\dir2\1

     

    shutil.rmtree(path, ignore_errors=False, onerror=None)

    删除整个目录树,路径必须是一个目录而不能是一个符号连接。参数ignore_errors设置为True时,会忽略发生的错误;如果设置为False时,当错误发生就会调用onerrro错误处理函数。

     

    shutil.move(src, dst)

    递归地移动一个文件或目录到另外目录位置。

    例子:

    #python 3.4

    import shutil

     

    src = 'F:\\temp\\py\\dir2\\1'

    dst = 'F:\\temp\\py\\dir1\\2'

    print(shutil.move(src, dst))

    结果输出如下:

    F:\temp\py\dir1\2

     

    shutil.disk_usage(path)

    返回磁盘的使用统计情况,以命名元组形式:(总数,已经使用,可用),单位为字节。

    例子:

    #python 3.4

    import shutil

     

    print(shutil.disk_usage('F:\\'))

    结果输出如下:

    usage(total=107373154304, used=93544562688, free=13828591616)

     

    shutil.chown(path, user=None, group=None)

    使用一个路径的拥有者和组关系。

     

    shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None)

    返回路径cmd里可执行文件的路径。

    例子:

    #python 3.4

    import shutil

     

    print(shutil.which('Python'))

    结果输出如下:

    C:\Python34\Python.EXE

     

    蔡军生  QQ:9073204  深圳



沪ICP备19023445号-2号
友情链接