zoukankan      html  css  js  c++  java
  • shutil.rmtree()

    shutil.rmtree(path, ignore_errors=False, onerror=None)   #递归地删除文件

    def rmtree(path, ignore_errors=False, onerror=None):
        """Recursively delete a directory tree.
    
        If ignore_errors is set, errors are ignored; otherwise, if onerror
        is set, it is called to handle the error with arguments (func,
        path, exc_info) where func is platform and implementation dependent;
        path is the argument to that function that caused it to fail; and
        exc_info is a tuple returned by sys.exc_info().  If ignore_errors
        is false and onerror is None, an exception is raised.
    
        """
        if ignore_errors:
            def onerror(*args):
                pass
        elif onerror is None:
            def onerror(*args):
                raise
        if _use_fd_functions:
            # While the unsafe rmtree works fine on bytes, the fd based does not.
            if isinstance(path, bytes):
                path = os.fsdecode(path)
            # Note: To guard against symlink races, we use the standard
            # lstat()/open()/fstat() trick.
            try:
                orig_st = os.lstat(path)
            except Exception:
                onerror(os.lstat, path, sys.exc_info())
                return
            try:
                fd = os.open(path, os.O_RDONLY)
            except Exception:
                onerror(os.lstat, path, sys.exc_info())
                return
            try:
                if os.path.samestat(orig_st, os.fstat(fd)):
                    _rmtree_safe_fd(fd, path, onerror)
                    try:
                        os.rmdir(path)
                    except OSError:
                        onerror(os.rmdir, path, sys.exc_info())
                else:
                    try:
                        # symlinks to directories are forbidden, see bug #1669
                        raise OSError("Cannot call rmtree on a symbolic link")
                    except OSError:
                        onerror(os.path.islink, path, sys.exc_info())
            finally:
                os.close(fd)
        else:
            return _rmtree_unsafe(path, onerror)
    
    # Allow introspection of whether or not the hardening against symlink
    # attacks is supported on the current platform
    rmtree.avoids_symlink_attacks = _use_fd_functions
    

    shutil 其他模块

    shutil.copyfile( src, dst) #从源src复制到dst中去。 如果当前的dst已存在的话就会被覆盖掉
    shutil.move( src, dst) #移动文件或重命名
    shutil.copymode( src, dst) #只是会复制其权限其他的东西是不会被复制的
    shutil.copystat( src, dst) #复制权限、最后访问时间、最后修改时间
    shutil.copy( src, dst) #复制一个文件到一个文件或一个目录
    shutil.copy2( src, dst) #在copy上的基础上再复制文件最后访问时间与修改时间也复制过来了,类似于cp –p的东西
    shutil.copy2( src, dst) #如果两个位置的文件系统是一样的话相当于是rename操作,只是改名;如果是不在相同的文件系统的话就是做move操作
    shutil.copytree( olddir, newdir, True/Flase) #把olddir拷贝一份newdir,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接,如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接

     

  • 相关阅读:
    OpenStack概述、虚拟机部署OpenStack
    foo bar 的典故
    PWA
    react 虚拟dom心得
    背包问题总结
    leetcode 44 通配符匹配(dp)
    黑客与画家
    njuoj 递归查询字符串
    我的第一篇博客
    接口测试入门(二)
  • 原文地址:https://www.cnblogs.com/giotto95827/p/9006348.html
Copyright © 2011-2022 走看看