精华内容
下载资源
问答
  • 文章目录shutil模块1.1简介1.2 作用及作用范围1.3文件拷贝示例1.3.1、shutil.copyfileobj() ==> 将文件的内容拷贝到另一个文件(可以指定length拷贝)1.3.2、shutil.copyfile(src, dst) ==> 拷贝文件1.3.3、...
  • 使用shutil.move(src, dst),src为要移动的文件的路径,dst为目的路径,路径必须是绝对路径 import os import shutil work_dir = os.getcwd() # 获取绝对路径 src = os.path.join(work_dir, 'images', '%s.png' % ...
  • shutil.copy() 函数实现文件复制功能,将 source 文件复制到 destination 文件夹中,两个参数都是字符串格式。如果 destination 是一个文件名称,那么它会被用来当作复制后的文件名称,即等于 复制 + 重命名。举例...
  • 主要介绍了python--shutil移动文件到另一个路径的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 详解Python_shutil模块

    2020-09-19 12:53:01
    主要介绍了Python_shutil模块功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • shutil –High-level file operations 高级的文件操作模块 os模块提供了对目录或者文件的新建/删除/查看文件属性,还提供了对文件以及目录的路径操作。比如说:绝对路径,父目录…… 但是,os文件的操作还应该包含...
  • 主要介绍了Python标准库shutil模块使用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 本章节介绍sys模块以及shutil模块,分享给刚学python的小伙伴,一起学习,共同进步 sys模块 import sys # 获取python的版本信息 print(sys.version) print(sys.argv) # 退出 sys.exit(1) shutil模块 import shutil ...
  • 今天小编就为大家分享一篇python 使用shutil复制图片的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 主要介绍了Python使用shutil模块实现文件拷贝,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 在本篇文章里小编给大家整理的是一篇关于Python3 shutil实例用法内容,有兴趣的朋友们可以学习下。
  • Python模块——shutil模块详解

    千次阅读 多人点赞 2020-08-17 21:12:58
    shutil模块详解

    本文大纲

    os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作。而Python另外一个标准库——shutil库,它作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作,这些 os 模块中一般是没有提供的。但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的。
    在这里插入图片描述

    知识串讲

    本文所使用的素材,都是基于以下2个文件夹,其中一个文件夹为空。
    在这里插入图片描述

    1)模块导入

    import shutil
    

    2)复制文件

    • 函数:shutil.copy(src,dst)
    • 含义:复制文件;
    • 参数:src表示源文件,dst表示目标文件夹;
    • 注意:当移动到一个不存在的“目标文件夹”,系统会将这个不存在的“目标文件夹”识别为新的文件夹,而不会报错;
    # 1.将a表的“data.txt”移动到b表
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b"
    
    shutil.copy(src,dst)
    ------------------------------------------------------------
    # 2.将a表的“data.txt”移动到b表,并重新命名为“new_data.txt”
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b\new_data.txt"
    
    shutil.copy(src,dst)
    ------------------------------------------------------------
    # 3.将a表的“data.txt”移动到“不存在”的文件夹
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
    
    shutil.copy(src,dst)
    """
    注意:对于情况3,系统会默认将“test_shutil_c”识别为文件名,而不是按照我们认为的,移动到一个新的不存在的文件夹。
    """
    

    结果如下:
    在这里插入图片描述

    3)复制文件夹

    • 函数:shutil.copytree(src,dst)
    • 含义:复制文件夹;
    • 参数:src表示源文件夹,dst表示目标文件夹;
    • 注意:这里只能是移动到一个空文件夹,而不能是包含其他文件的非空文件夹,否则会报错PermissionError;
    ① 如果目标文件夹中存在其他文件,会报错;
    # 将a文件夹移动到b文件夹,由于前面的操作,此时b文件夹中已经有其他文件
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b"
    
    shutil.copytree(src,dst)
    

    结果如下:
    在这里插入图片描述

    ② 如果指定任意一个目标文件夹,则会自动创建;
    # c文件夹原本是不存在的,我们使用了下方的代码,会自动创建该文件夹
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
    
    shutil.copytree(src,dst)
    

    结果如下:
    在这里插入图片描述

    4)移动文件或文件夹

    • 函数:shutil.move(src,dst)
    • 含义:移动文件/文件夹;
      – 参数:src表示源文件/文件夹,dst表示目标文件夹;
    • 注意:文件/文件夹一旦被移动了,原来位置的文件/文件夹就没了。目标文件夹不存在时,会报错;
    # 将当前工作目录下的“a.xlsx”文件,移动到a文件夹下
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
    shutil.move("a.xlsx",dst)
    ----------------------------------------------------------------
    # 将a文件夹下的“a.xlsx”文件,移动到b文件夹中,并重新命名为“aa.xlsx”
    src = r"C:/Users/黄伟/Desktop/publish/os模块/test_shutil_a\a.xlsx"
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b\aa.xlsx"
    shutil.move(src,dst)
    

    结果如下:
    在这里插入图片描述
    注意:移动文件夹操作类似,我这里就不赘述了,自行下去学习。

    5)删除文件夹(慎用)

    • 函数:shutil.rmtree(src)
    • 含义:删除文件夹;
    • 参数:src表示源文件夹;
    • 注意:区别这里和os模块中remove()、rmdir()的用法,remove()方法只能删除某个文件,mdir()只能删除某个空文件夹。但是shutil模块中的rmtree()可以递归彻底删除非空文件夹;
    # 将c文件夹彻底删除
    src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
    shutil.rmtree(src)
    

    结果如下:
    在这里插入图片描述

    6)创建和解压压缩包

    • zipobj.write():创建一个压缩包;
    • zipobj.namelist():读取压缩包中的文件信息;
    • zipobj.extract():将压缩包中的单个文件,解压出来;
    • zipobj.extractall():将压缩包中所有文件,解压出来;
    • shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的,因此需要导入这两个模块;
    • 注意:这里所说的压缩包,指的是“.zip”格式的压缩包;
    ① 创建一个压缩包
    import zipfile
    import os
    file_list = os.listdir(os.getcwd())
    # 将上述所有文件,进行打包,使用“w”
    with zipfile.ZipFile(r"我创建的压缩包.zip", "w") as zipobj:
        for file in file_list:
            zipobj.write(file)
    

    结果如下:
    在这里插入图片描述

    ② 读取压缩包中的文件信息
    import zipfile
    
    with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
        print(zipobj.namelist())
    

    结果如下:
    在这里插入图片描述

    ③ 将压缩包中的单个文件,解压出来
    • 注意:目标文件夹不存在,会自动创建;
    import zipfile
    # 将压缩包中的“test.ipynb”文件,单独解压到a文件夹下
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
    with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
        zipobj.extract("test.ipynb",dst)
    

    结果如下:
    在这里插入图片描述

    ④ 将压缩包中所有文件,解压出来;
    • 注意:目标文件夹不存在,会自动创建;
    import zipfile
    # 将压缩包中的所有文件,解压到d文件夹下
    dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_d"
    with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
        zipobj.extractall(dst)
    

    结果如下:
    在这里插入图片描述

    展开全文
  • Python Shutil模块

    2020-07-12 13:44:52
    When you need to work with high-level file operations like copying contents of a file, create a new copy of a file and archiving it, Python shutil module is the way to go. 当您需要进行高级文件操作...

    When you need to work with high-level file operations like copying contents of a file, create a new copy of a file and archiving it, Python shutil module is the way to go.

    当您需要进行高级文件操作(例如复制文件内容,创建文件的新副本并进行归档)时,Python shutil模块是您的理想之选。

    Python关闭 (Python shutil)

    Python shutil module enables us to operate with file objects easily and without diving into file objects a lot. It takes care of low-level semantics like creating file objects, closing the files once they are copied and allows us to focus on the business logic of our program. Let’s see shutil module in action here.

    Python shutil模块使我们能够轻松处理文件对象,而无需大量研究文件对象。 它负责处理低级语义,例如创建文件对象,在复制文件后关闭文件,并使我们能够专注于程序的业务逻辑。 让我们在这里看到shutil模块的作用。

    Python Shutil示例 (Python shutil example)

    Let’s look into different examples to understand shutil module.

    让我们看一下不同的示例来了解shutil模块。

    拷贝文件 (Copy File)

    Using shutil’s copyfile() function, it is easy to copy a file to a new file in current directory only.

    使用shutil的copyfile()函数,很容易仅将文件复制到当前目录中的新文件。

    Here is a sample program on how we can make a new clone of existing file in our current directory:

    这是一个示例程序,说明如何在当前目录中创建现有文件的新克隆:

    import os
    import shutil
    
    print('BEFORE:', os.listdir('.'))
    shutil.copyfile('file_copy.py', 'file_copy.py.copy')
    print('AFTER:', os.listdir('.'))

    Let’s see the output for this program:

    让我们看一下该程序的输出:

    Python shutil Copy file

    Copy file to current directory

    将文件复制到当前目录

    Note that copyfile() function takes name of the new file to be created.

    请注意, copyfile()函数采用要创建的新文件的名称。

    将文件复制到另一个目录 (Copying Files to another directory)

    Using shutil’s copy() function, it is easy to copy a file to another directory.

    使用shutil的copy()函数,可以很容易地将文件复制到另一个目录。

    Let’s look at a code snippet on how this can be done:

    让我们看一下如何做到这一点的代码片段:

    import os
    import shutil
    
    os.mkdir('journaldev')
    print('BEFORE:', os.listdir('journaldev'))
    shutil.copy('file_copy.py', 'journaldev')
    print('AFTER:', os.listdir('journaldev'))

    Let’s see the output for this program:

    让我们看一下该程序的输出:

    python shutil Copy file to new directory

    Copy file to new directory

    将文件复制到新目录

    This function is different from copyfile() function as the later takes a file name as a parameter whereas the copy() function takes directory name as an input.

    此函数与copyfile()函数不同,后者在以后将文件名作为参数,而copy()函数将目录名作为输入。

    Finally, the permissions of the file are also cloned when copying a file with both the functions but metadata is not copied, which means that new file created will have a freshly created time instead of the original file’s time.

    最后,在复制具有两个功能的文件时,文件权限也会被克隆 ,但不会复制元数据,这意味着创建的新文件将具有新创建的时间,而不是原始文件的时间。

    使用元数据复制文件 (Copying file with Metadata)

    If you need to make an exact clone of the file, along with the permissions and the metadata of a file as well, we can make use of the copy2() function. Note that this might not work completely on a POSIX based system.

    如果您需要对文件进行精确的克隆,以及文件的权限和元数据,我们可以使用copy2()函数。 请注意,这可能无法在基于POSIX的系统上完全工作

    Here is a sample program on how we use this function::

    这是有关如何使用此功能的示例程序:

    import os
    import shutil
    import time
    
    def file_metadata(file_name):
        stat_info = os.stat(file_name)
        print('  Mode    :', oct(stat_info.st_mode))
        print('  Created :', time.ctime(stat_info.st_ctime))
        print('  Accessed:', time.ctime(stat_info.st_atime))
        print('  Modified:', time.ctime(stat_info.st_mtime))
    
    os.mkdir('journaldev')
    print('SOURCE FILE:')
    file_metadata('file_copy.py')
    
    shutil.copy2('file_copy.py', 'journaldev')
    
    print('DESTINATION FILE:')
    file_metadata('journaldev/file_copy.py')

    We run this function on a POSIX system so only the Mode of the file and Modified date is preserved:

    我们在POSIX系统上运行此功能,因此仅保留文件的模式和修改日期

    Copy File Metadata (as much as possible)

    Copy File Metadata (as much as possible)

    复制文件元数据(尽可能多)

    On other systems, even the created and accessed time would have matched exactly.

    在其他系统上,即使创建和访问的时间也将完全匹配。

    复制完整目录 (Replicating complete directory)

    With copytree() function, it is possible to completely replicate a directory tree recursively. This means that if there are more directories inside a directory, that directory will be cloned as well.

    使用copytree()函数,可以递归完全复制目录树。 这意味着,如果目录中有更多目录,该目录也将被克隆。

    Let’s look at a code snippet on how we can clone a complete directory:

    让我们看一下如何克隆完整目录的代码片段:

    import pprint
    import shutil
    import os
    
    shutil.copytree('../shutil', './journaldev')
    
    print('\nAFTER:')
    pprint.pprint(os.listdir('./journaldev'))

    Let’s see the output for this program:

    让我们看一下该程序的输出:

    python shutil Copy directory recursively

    Copy directory recursively

    递归复制目录

    Note that we do not print the directory journaldev contents before as the directory name copytree() function takes as input must not exist before running this command.

    请注意,我们之前不会打印目录journaldev内容,因为在运行此命令之前,目录名copytree()函数作为输入必须不存在

    删除目录 (Removing a Directory)

    Another simplest example with shutil is removing complete directory. No need to recursively remove files or close file handling connections.

    带有shutil另一个最简单的示例是删除完整目录。 无需递归删除文件或关闭文件处理连接。

    Here is a sample program on how easy it is with rmtree() function:

    这是一个示例程序,说明使用rmtree()函数有多么容易:

    import pprint
    import shutil
    import os
    
    print('BEFORE:')
    pprint.pprint(os.listdir('.'))
    
    shutil.rmtree('journaldev')
    
    print('\nAFTER:')
    pprint.pprint(os.listdir('.'))

    Here, we print contents of current directory. Before running the script, the journaldev directory exists in current folder. After running the script, it is deleted along with the contents. Let’s see the output for this program:

    在这里,我们打印当前目录的内容。 运行脚本之前, journaldev目录位于当前文件夹中。 运行脚本后,它将与内容一起删除。 让我们看一下该程序的输出:

    python shutil Remove file and directory tree

    Remove complete directory tree

    删除完整的目录树

    查找文件 (Finding files)

    The which() function presents an excellent tool to find a file on your machine which is present on the PATH.

    which()函数提供了一个很好的工具,可以在您的计算机上找到PATH中存在的文件。

    Here is a sample program with a file example:

    这是一个带有文件示例的示例程序:

    import shutil
    
    print(shutil.which('bsondump'))
    print(shutil.which('no-such-program'))

    Let’s see the output for this program:

    让我们看一下该程序的输出:

    Finding a file on PATH

    Finding a file on PATH

    在PATH上查找文件

    监视文件系统空间 (Monitoring File-system Space)

    We can even get information about how much is present on our file system with simplete call using disk_usage() function.

    我们甚至可以使用disk_usage()函数通过disk_usage()调用来disk_usage()有关文件系统中存在多少信息。

    Here is a sample program:

    这是一个示例程序:

    import shutil
    
    total_b, used_b, free_b = shutil.disk_usage('.')
    
    gb = 10 ** 9
    
    print('Total: {:6.2f} GB'.format(total_b / gb))
    print('Used : {:6.2f} GB'.format(used_b / gb))
    print('Free : {:6.2f} GB'.format(free_b / gb))

    Let’s see the output for this program:

    让我们看一下该程序的输出:

    File System Space

    File System Space

    文件系统空间

    结论 (Conclusion)

    In this lesson, we studied how we can work with high-level file operations like copying contents of a file, create a new copy of a file etc. without diving into complex File Handling operations with shutil module in Python.

    在本课程中,我们研究了如何使用高级文件操作(如复制文件内容,创建文件的新副本等),而又不shutil使用Python中的shutil模块进行复杂的文件处理操作。

    Read more Python posts here.

    在此处阅读更多Python帖子。

    下载源代码 (Download the Source Code)

    翻译自: https://www.journaldev.com/20536/python-shutil-module

    展开全文
  • shutil

    2018-04-25 17:18:00
     1、shutil.copyfileobj(fsrc, fdst[, length]) 将文件内容拷贝到另一个文件中 import shutil shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))  2、shutil.copyfile(src, dst) 拷贝文件....

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

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

    import shutil
    shutil.copyfileobj(open('old.xml','r'), open('new.xml', 'w'))

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

    shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在

      3、shutil.copymode(src, dst)  仅拷贝权限。内容、组、用户均不变

    shutil.copymode('f1.log', 'f2.log') #目标文件必须存在

      4、shutil.copystat(src, dst)  仅拷贝状态的信息,包括:mode bits, atime, mtime, flags

    shutil.copystat('f1.log', 'f2.log') #目标文件必须存在

      5、shutil.copy(src, dst)  拷贝文件和权限

    import shutil
    shutil.copy('f1.log', 'f2.log')

      6、shutil.ignore_patterns(*patterns)
      shutil.copytree(src, dst, symlinks=False, ignore=None)
      递归的去拷贝文件夹

    import shutil
    shutil.copytree('folder1', 'folder2', ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) #目标目录不能存在,注意对folder2目录父级目录要有可写权限,ignore的意思是排除

      7、shutil.rmtree(path[, ignore_errors[, onerror]])  递归的去删除文件

    import shutil
    shutil.rmtree('folder1')

      8、shutil.move(src, dst)  递归的去移动文件,它类似mv命令,其实就是重命名。

    import shutil
    shutil.move('folder1', 'folder3')

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

        创建压缩包并返回文件路径,例如:zip、tar
        创建压缩包并返回文件路径,例如:zip、tar

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

      如 data_bak =>保存至当前路径
      如:/tmp/data_bak =>保存至/tmp/

      • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
      • root_dir: 要压缩的文件夹路径(默认当前目录)
      • owner: 用户,默认当前用户
      • group: 组,默认当前组
      • logger: 用于记录日志,通常是logging.Logger对象
    #将 /data 下的文件打包放置当前程序目录
    import shutil
    ret = shutil.make_archive("data_bak", 'gztar', root_dir='/data')
    
    #将 /data下的文件打包放置 /tmp/目录
    import shutil
    ret = shutil.make_archive("/tmp/data_bak", 'gztar', root_dir='/data')

      10、shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

      *zipfile压缩&解压缩

    import zipfile
    
    # 压缩
    z = zipfile.ZipFile('laxi.zip', 'w')
    z.write('a.log')
    z.write('data.data')
    z.close()
    
    # 解压
    z = zipfile.ZipFile('laxi.zip', 'r')
    z.extractall(path='.')
    z.close()

      *tarfile压缩&解压缩

    import tarfile
    
    # 压缩
    >>> t=tarfile.open('/tmp/egon.tar','w')
    >>> t.add('/test1/a.py',arcname='a.bak')
    >>> t.add('/test1/b.py',arcname='b.bak')
    >>> t.close()
    
    # 解压
    >>> t=tarfile.open('/tmp/egon.tar','r')
    >>> t.extractall('/egon')
    >>> t.close(

     

    转载于:https://www.cnblogs.com/webc/p/8945999.html

    展开全文
  • Python标准库shutil用法

    2020-04-22 08:22:01
    shutil模块提供了许多关于文件和文件集合的高级操作,特别提供了支持文件复制和删除的功能。 文件夹与文件操作 copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的...

    shutil模块提供了许多关于文件和文件集合的高级操作,特别提供了支持文件复制和删除的功能。

    文件夹与文件操作

    copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的长度,用做缓冲区大小

    • fsrc: 源文件
    • fdst: 复制至fdst文件
    • length: 缓冲区大小,即fsrc每次读取的长度

    1

    2

    3

    4

    import shutil

    f1 = open("file.txt","r")

    f2 = open("file_copy.txt","a+")

    shutil.copyfileobj(f1,f2,length=1024)

    copyfile(src, dst): 将src文件内容复制至dst文件

    • src: 源文件路径
    • dst: 复制至dst文件,若dst文件不存在,将会生成一个dst文件;若存在将会被覆盖
    • follow_symlinks:设置为True时,若src为软连接,则当成文件复制;如果设置为False,复制软连接。默认为True。Python3新增参数

    1

    2

    import shutil

    shutil.copyfile("file.txt","file_copy.txt")

    copymode(src, dst): 将src文件权限复制至dst文件。文件内容,所有者和组不受影响

    • src: 源文件路径
    • dst: 将权限复制至dst文件,dst路径必须是真实的路径,并且文件必须存在,否则将会报文件找不到错误
    • follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数

    1

    2

    import shutil

    shutil.copymode("file.txt","file_copy.txt")

    copystat(src, dst): 将权限,上次访问时间,上次修改时间以及src的标志复制到dst。文件内容,所有者和组不受影响

    • src: 源文件路径
    • dst: 将权限复制至dst文件,dst路径必须是真实的路径,并且文件必须存在,否则将会报文件找不到错误
    • follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限、上次访问时间,上次修改时间以及src的标志,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数

    1

    2

    import shutil

    shutil.copystat("file.txt","file_copy.txt")

    copy(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。权限会被一并复制。本质是先后调用了copyfile与copymode而已

    • src:源文件路径
    • dst:复制至dst文件夹或文件
    • follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数

    1

    2

    3

    4

    improt shutil,os

    shutil.copy("file.txt","file_copy.txt")

    # 或者

    shutil.copy("file.txt",os.path.join(os.getcwd(),"copy"))

    copy2(src, dst): 将文件src复制至dst。dst可以是个目录,会在该目录下创建与src同名的文件,若该目录下存在同名文件,将会报错提示已经存在同名文件。权限、上次访问时间、上次修改时间和src的标志会一并复制至dst。本质是先后调用了copyfile与copystat方法而已

    • src:源文件路径
    • dst:复制至dst文件夹或文件
    • follow_symlinks:设置为False时,src, dst皆为软连接,可以复制软连接权限、上次访问时间,上次修改时间以及src的标志,如果设置为True,则当成普通文件复制权限。默认为True。Python3新增参数

    1

    2

    3

    4

    improt shutil,os

    shutil.copy2("file.txt","file_copy.txt")

    # 或者

    shutil.copy2("file.txt",os.path.join(os.getcwd(),"copy"))

    ignore_patterns(*patterns): 忽略模式,用于配合copytree()方法,传递文件将会被忽略,不会被拷贝

    • patterns:文件名称,元组

    copytree(src, dst, symlinks=False, ignore=None): 拷贝文档树,将src文件夹里的所有内容拷贝至dst文件夹

    • src:源文件夹
    • dst:复制至dst文件夹,该文件夹会自动创建,需保证此文件夹不存在,否则将报错
    • symlinks:是否复制软连接,True复制软连接,False不复制,软连接会被当成文件复制过来,默认False
    • ignore:忽略模式,可传入ignore_patterns()
    • copy_function:拷贝文件的方式,可以传入一个可执行的处理函数,默认为copy2,Python3新增参数
    • ignore_dangling_symlinks:sysmlinks设置为False时,拷贝指向文件已删除的软连接时,将会报错,如果想消除这个异常,可以设置此值为True。默认为False,Python3新增参数

    1

    2

    3

    4

    5

    6

    import shutil,os

    folder1 = os.path.join(os.getcwd(),"aaa")

    # bbb与ccc文件夹都可以不存在,会自动创建

    folder2 = os.path.join(os.getcwd(),"bbb","ccc")

    # 将"abc.txt","bcd.txt"忽略,不复制

    shutil.copytree(folder1,folder2,ignore=shutil.ignore_patterns("abc.txt","bcd.txt")

    rmtree(path, ignore_errors=False, οnerrοr=None): 移除文档树,将文件夹目录删除

    • ignore_errors:是否忽略错误,默认False
    • onerror:定义错误处理函数,需传递一个可执行的处理函数,该处理函数接收三个参数:函数、路径和excinfo

    1

    2

    3

    import shutil,os

    folder1 = os.path.join(os.getcwd(),"aaa")

    shutil.rmtree(folder1)

    move(src, dst): 将src移动至dst目录下。若dst目录不存在,则效果等同于src改名为dst。若dst目录存在,将会把src文件夹的所有内容移动至该目录下面

    • src:源文件夹或文件
    • dst:移动至dst文件夹,或将文件改名为dst文件。如果src为文件夹,而dst为文件将会报错
    • copy_function:拷贝文件的方式,可以传入一个可执行的处理函数。默认为copy2,Python3新增参数

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    import shutil,os

    # 示例一,将src文件夹移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作

    folder1 = os.path.join(os.getcwd(),"aaa")

    folder2 = os.path.join(os.getcwd(),"bbb")

    shutil.move(folder1, folder2)

    # 示例二,将src文件移动至dst文件夹下面,如果bbb文件夹不存在,则变成了重命名操作

    file1 = os.path.join(os.getcwd(),"aaa.txt")

    folder2 = os.path.join(os.getcwd(),"bbb")

    shutil.move(file1, folder2)

    # 示例三,将src文件重命名为dst文件(dst文件存在,将会覆盖)

    file1 = os.path.join(os.getcwd(),"aaa.txt")

    file2 = os.path.join(os.getcwd(),"bbb.txt")

    shutil.move(file1, file2)

    disk_usage(path): 获取当前目录所在硬盘使用情况。Python3新增方法

    • path:文件夹或文件路径。windows中必须是文件夹路径,在linux中可以是文件路径和文件夹路径

    1

    2

    3

    4

    import shutil.os

    path = os.path.join(os.getcwd(),"aaa")

    info = shutil.disk_usage(path)

    print(info)   # usage(total=95089164288, used=7953104896, free=87136059392)

    chown(path, user=None, group=None): 修改路径指向的文件或文件夹的所有者或分组。Python3新增方法

    • path:路径
    • user:所有者,传递user的值必须是真实的,否则将报错no such user
    • group:分组,传递group的值必须是真实的,否则将报错no such group

    1

    2

    3

    import shutil,os

    path = os.path.join(os.getcwd(),"file.txt")

    shutil.chown(path,user="root",group="root")

    which(cmd, mode=os.F_OK | os.X_OK, path=None): 获取给定的cmd命令的可执行文件的路径。Python3新增方法

    1

    2

    3

    import shutil

    info = shutil.which("python3")

    print(info)   # /usr/bin/python3

    归档操作

    shutil还提供了创建和读取压缩和存档文件的高级使用程序。内部实现主要依靠的是zipfile和tarfile模块

    make_archive(base_name, format, root_dir, …): 生成压缩文件

    • base_name:压缩文件的文件名,不允许有扩展名,因为会根据压缩格式生成相应的扩展名
    • format:压缩格式
    • root_dir:将制定文件夹进行压缩

    1

    2

    3

    4

    5

    6

    import shutil,os

    base_name = os.path.join(os.getcwd(),"aaa")

    format = "zip"

    root_dir = os.path.join(os.getcwd(),"aaa")

    # 将会root_dir文件夹下的内容进行压缩,生成一个aaa.zip文件

    shutil.make_archive(base_name, format, root_dir)

    get_archive_formats(): 获取支持的压缩文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3还多支持一种格式xztar

    unpack_archive(filename, extract_dir=None, format=None): 解压操作。Python3新增方法

    • filename:文件路径
    • extract_dir:解压至的文件夹路径。文件夹可以不存在,会自动生成
    • format:解压格式,默认为None,会根据扩展名自动选择解压格式

    1

    2

    3

    4

    import shutil,os

    zip_path = os.path.join(os.getcwd(),"aaa.zip")

    extract_dir = os.path.join(os.getcwd(),"aaa")

    shutil.unpack_archive(zip_path, extract_dir)

    get_unpack_formats(): 获取支持的解压文件格式。目前支持的有:tar、zip、gztar、bztar和xztar。Python3新增方法

    展开全文
  • Python标准库之 shutil 高阶文件操作『详细』 文章目录Python标准库之 shutil 高阶文件操作『详细』一、Python shutil介绍 二、导入 shutil 库三、目录和文件操作 一、Python shutil介绍 shutil 模块提供了一系列对...
  • Python 中 shutil 的使用

    2021-07-06 10:25:46
    src:源文件路径 dst:复制至 dst 文件夹或文件 >>> import shutil >>> shutil.copy('file', 'filecopy') 'filecopy' >>> shutil.copy('file', './upload') './upload/file' >>> shutil.copy('file', './upload/...
  • shutil.copyfile(src,dst) src(str),文件路径; dst(str),文件路径; 将文件 src 复制到 文件 dst 中,复制成功后返回 dst 完整路径;src,dst 需是文件路径而非文件目录 >>> shutil.copy.
  • shutil模块的基本使用

    2019-07-04 17:49:20
    # !/usr/bin/env Python3 # -*- coding: utf-8 -*- ...# @FILE : shutil用法.py # @Time : 2019/7/4 16:34 # @Software : PyCharm import os import shutil """ 主要作用与拷贝文件用的 """ # 1.shutil....
  • python中shutil模块用法介绍

    千次阅读 2019-06-16 18:56:01
    文章翻译了python标准库中shutil的介绍: https://docs.python.org/zh-cn/3.7/library/shutil.html shutil模块提供了一些针对文件和目录的高级操作,主要是拷贝、移动。对于单个文件的操作,还可参考os模块 ...
  • Python使用shutil.move笔记

    千次阅读 2020-05-03 01:20:59
    Python使用shutil.move笔记需求开搞!语法遇到的问题1. 文件已存在目标文件夹会报错解决方案2. 目标文件夹不存在会报错整体思路备份桌面文件备份Navicat文件清理OneDrive文件 需求 这次的需求是这样的 我经常会写很...
  • shutil模块 shutil -- High-level file operations 是一种高层次的文件操作工具。 类似于高级API,而且主要强大之处在于其对文件的复制与删除操作更是比较支持好。 copyfile( src, dst) 从源src复制到dst中...
  • shutil模块

    2021-04-08 11:29:08
    shutil模块 引入 什么是shutil模块 shutil 模块是 Python 的内置模块 : 高级的文件操作模块 用于文件, 文件夹, 压缩包处理, 也主要用于文件的拷贝 一、shutil 模块的常用方法介绍 1.copyfileobj( ) 用法:...
  • Python3:shutil

    2020-03-02 09:47:00
    shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数。 目录和文件操作 shutil.copyfileobj(fsrc, fdst[, length]):拷贝文件内容到另一个文件,可以指定拷贝的大小。 shutil....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,617
精华内容 10,246
关键字:

shutil