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

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

时间:2023-11-29 17:14:51浏览次数:47  
标签:文件 路径 Python self 入门教程 解压缩 outfile shutil infile

前言

        很多时候编过的代码过段时间就忘了,所以想用博文记录一下一些平时常用库的函数,今天跟大家分享一下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库是一个非常实用的库,它可以帮助我们更方便地处理文件和文件夹。它的函数设计得非常人性化,而且文档也非常详细,使用起来非常方便。

标签:文件,路径,Python,self,入门教程,解压缩,outfile,shutil,infile
From: https://www.cnblogs.com/RSran/p/17865310.html

相关文章

  • python流行控制语句
    【一】流程控制语句介绍程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。其流程控制方式有顺序结构分支结构循环结构这里最简单......
  • 聪明办法学python-task5
    条件if语句if<条件判断1>:<执行1>elif<条件判断2>:<执行2>elif<条件判断3>:<执行3>else:<执行4>条件判断从上向下匹配,当满足条件时执行对应的块内语句,后续的elif和else都不再执行。if-else推导式(python语法糖)returnnif(n>=0)else-neg:绝对值函数(在pyt......
  • python计算两个矩形的重叠_python计算两个矩形框重合百分比的实例
    如下所示:defmat_inter(box1,box2):#判断两个矩形是否相交#box=(xA,yA,xB,yB)x01,y01,x02,y02=box1x11,y11,x12,y12=box2lx=abs((x01+x02)/2-(x11+x12)/2)ly=abs((y01+y02)/2-(y11+y12)/2)sax=abs(x01......
  • python基础_05_python基础【2】
    【五】Python基础之程序与用户交互【1】什么是与用户交互交互的本质就是输入、输出用户交互就是人往计算机中input/输入数据,计算机print/输出结果【2】输入input函数用户输入一些内容,用户按下回车键后,input函数会返回用户输入的内容并且传输回来的数据均为字符串类型......
  • # 聪明办法学Python Task 3
    聪明办法学PythonChap4:条件使用布尔表达式n=1(n<0)*1#0(n>=0)*2#2判断值为Flase时在数值计算上等价于0,为True时在数值计算上等价于1多个判断ifa:passelifb:passelifc:passelse:passif推导式defabs1(n):ifn>0:returnn......
  • js和python获取1-100之间的质数
    jsfor(leti=2;i<=100;i++){letiszs=truefor(letj=2;j<i;j++){if(i%j===0){iszs=falsebreak}}if(iszs){zs.push(i)}}console.log(zs)pythonzs=[]foriinrange(2,101):iszs......
  • Python对比图片
    一.使用PIL(pillow)模块进行图片对比:1.1安装PIL模块pipinstallpillow1.2示例代码将两张图片转换为灰度图像,并计算它们之间的差异;然后,计算差异的统计信息并输出平均差异值。如果两张图片完全相同,则平均差异值为0;如果完全不同,则平均差异值将接近255。#导入需要使用的模块fr......
  • Python使用多进程及代理ip爬取小说
    前言在爬虫的过程中,为了提高爬取速度,我们可以采用多进程、多线程、协程等方式。本文将介绍Python使用多进程进行爬取的方法,并结合代理IP爬取小说为例子,帮助读者了解如何使用Python多进程和代理IP来进行爬取,以提高爬取效率和规避反爬机制。一、使用多进程爬取小说多进程是一种并发编......
  • python条件
    条件if语句if条件1:语句1elif条件2:语句2else:语句3if-els推导式ifexpression例:defabs7(n):returnnif(n>=0)else-nmatch-case语句match变量:case1:语句1case2:语句2case3:语句3case_:类似于default语句4case后的内容可以用|隔开,如1|2|3代码风格......
  • VS code中python代码格式化配置
    VScode中python代码格式化配置settings.jsonVScode打开命令面板(快捷键ctrlshiftP)搜settings.json发现里面有好几个设置:用户设置、工作区设置、文件夹设置、默认设置。其中默认设置一般不动,另外三个设置则是作用域一层层缩小:用户下所有文件=>工作区文件=>文件夹文件,可以......