【Python入门教程】Python的shutil库介绍+基础函数使用(文件/目录复制、移动、删除、解压缩等)

前言

        很多时候编过的代码过段时间就忘了,所以想用博文记录一下一些平时常用库的函数,今天跟大家分享一下python的shutil库的常用函数,包括文件复制、删除、移动等常见操作。同时为了复习之前python类的使用,所以今天的代码就用类封装起来了,大家直接看函数就行,不需要用我的代码。

一、 shutil库介绍

   shutil 是 Python 的一个标准库,提供了很多文件操作的高级接口,包括文件复制、删除、移动等常见操作。相比于 os 模块,shutil 提供了更加面向对象的方法,使得我们能够更加方便地操作文件。这个库的使用非常方便,且功能强大,能够满足你在文件操作上的大部分需求。

二、文件/文件夹的复制

        每个函数的注意事项已经写在了对应函数的注释里,我就不讲解了,这个库的函数还是非常简单的,入参只有路径。只需要注意一下函数所需路径的格式即可。

# -*- coding: utf-8 -*-
"""
@Time : 2023/05/29 13:20
@Auth : RS迷途小书童
@File :Shutil Function.py
@IDE :PyCharm
@Purpose:shutil库的相关操作
"""
import shutil


class Copyfile:
    # 复制文件/文件属性

    def __init__(self, infile, outfile):
        self.infile = infile
        self.outfile = outfile

    def copy_file(self):
        """
        1.src为源文件路径(必须是文件),dst为目标文件路径(文件名可加可不加)
        2.目标文件如存在会覆盖掉,不存在会创建新文件,包括路径
        3.copy内容和权限,文件属性(时间等)没有copy
        """
        shutil.copy(self.infile, self.outfile)

    def copy_file1(self):
        """
        1.src为源文件路径(必须是文件),dst为目标文件路径,必须包含文件名
        2.目标文件如存在会覆盖掉,不存在会创建新文件,包括路径
        """
        shutil.copyfile(self.infile, self.outfile)

    def copy_file2(self):
        """
        1.src为源文件路径,dst为目标文件路径,必须包含文件名
        2.目标文件如存在会覆盖掉,不存在会创建新文件,包括路径
        3.复制源文件的内容和stat信息(包含用户,组,权限,时间信息等)
        """
        shutil.copyfile(self.infile, self.outfile)

    def copy_file_mode(self):
        """
        1.src为源文件路径,dst为目标文件路径,必须包含文件名
        2.目标文件如存在会覆盖掉,不存在会报错
        3.只复制源文件的权限
        """
        shutil.copymode(self.infile, self.outfile)

    def copy_file_stat(self):
        """
        1.src为源文件路径(必须是文件),dst为目标文件路径(文件名可加可不加)
        2.目标文件必须已经存在,只复制stat属性信息,包含权限,时间,组,用户等,不复制文件内容
        """
        shutil.copystat(self.infile, self.outfile)

    def copy_path(self):
        """
        1.src为源文件路径(文件夹),dst为目标路径(必须不存在)
        """
        shutil.copytree(self.infile, self.outfile, ignore=None, copy_function=shutil.copy2)
        # ignore=shutil.ignore_patterns('*.txt'), copy_function=shutil.copy / copy_function=shutil.copy2


if __name__ == "__main__":
    copy_instance = Copyfile("D:/彭俊喜/1.log", "Z:/2.log")
    copy_instance.copy_file_stat()

三、文件/文件夹的移动和删除

        每个函数的注意事项已经写在了对应函数的注释里,我就不讲解了,这个库的函数还是非常简单的,入参只有路径。只需要注意一下函数所需路径的格式即可。

# -*- coding: utf-8 -*-
"""
@Time : 2023/05/29 13:20
@Auth : RS迷途小书童
@File :Shutil Function.py
@IDE :PyCharm
@Purpose:shutil库的相关操作
"""
import shutil


class Movefile:
    # 移动/删除文件

    def __init__(self, infile, outfile):
        self.infile = infile
        self.outfile = outfile

    def move_filepath(self):
        """
        1.src为源文件路径,dst为目标文件路径,两者都可以是文件或者目录
        """
        shutil.move(self.infile, self.outfile)

    def remove_full_path(self):
        """
        1.src为源文件路径
        2.递归彻底删除非空文件夹
        """
        shutil.rmtree(self.infile)

四、文件/文件夹的压缩和解压

        文件的压缩和解压需要注意的是,多了一个压缩格式的入参。同时注意压缩和解压的入参顺序不一致!!!

# -*- coding: utf-8 -*-
"""
@Time : 2023/05/29 13:20
@Auth : RS迷途小书童
@File :Shutil Function.py
@IDE :PyCharm
@Purpose:shutil库的相关操作
"""
import shutil


class CompressFile:
    # 压缩和解压文件

    def __init__(self, infile, outfile, compress_type):
        self.infile = infile
        self.outfile = outfile
        self.format = compress_type

    def compress_filepath(self):
        """
        1.src为源文件路径,dst为目标文件路径,两者都可以是文件或者目录.
        2.不会删除源文件
        """
        shutil.make_archive(self.infile, self.format, self.outfile)
        # format为压缩格式,可以是"zip", "tar", "gz tar","bz tar", or "xz tar"

    def decompress_filepath(self):
        """
        1.src为源文件路径,dst为目标文件路径
        """
        shutil.unpack_archive(self.infile, self.outfile, self.format)
        # format为解压缩格式,可以是"zip", "tar", "gz tar","bz tar", or "xz tar",默认为根据源文件后缀

五、总结

   shutil 是 Python 中一个非常实用的库,它提供了许多文件操作的高级接口,以及一些与文件系统有关的其他操作。这个库的使用可以帮助我们更方便地处理文件和文件夹,而不需要自己手动处理底层的文件系统调用。

shutil库的主要功能可以分为以下几个方面:

  1. 文件操作:shutil库提供了复制、移动、删除文件等操作的高级接口,而且这些操作都是原子性的,也就是说在操作过程中如果出现问题,文件系统会保证这些操作要么全部成功,要么全部失败,不会出现只有部分操作成功的情况。
  2. 文件夹操作:shutil库也提供了创建、删除、改名文件夹等操作的高级接口,同样这些操作也是原子性的。
  3. 其他操作:shutil库还提供了一些其他有用的操作,比如获取文件或文件夹的信息(如大小、修改时间等)、检查文件或文件夹是否存在、获取文件或文件夹的绝对路径等。

        

        总的来说,shutil库是一个非常实用的库,它可以帮助我们更方便地处理文件和文件夹。它的函数设计得非常人性化,而且文档也非常详细,使用起来非常方便。

猜你喜欢

转载自blog.csdn.net/m0_56729804/article/details/134693714