【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库的主要功能可以分为以下几个方面:

文件操作:shutil库提供了复制、移动、删除文件等操作的高级接口,而且这些操作都是原子性的,也就是说在操作过程中如果出现问题,文件系统会保证这些操作要么全部成功,要么全部失败,不会出现只有部分操作成功的情况。

文件夹操作:shutil库也提供了创建、删除、改名文件夹等操作的高级接口,同样这些操作也是原子性的。

其他操作:shutil库还提供了一些其他有用的操作,比如获取文件或文件夹的信息(如大小、修改时间等)、检查文件或文件夹是否存在、获取文件或文件夹的绝对路径等。

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