Python shutil 库详解

liftword2个月前 (03-06)技术文章14

1. shutil库概述

简介

shutil是Python中的一个标准库,它提供了一系列对文件和文件集合的高级操作。“shutil”这个名字是“shell utilities”(外壳工具)的缩写,它的功能类似于在shell脚本中对文件进行操作的命令,但通过Python代码来实现,使得操作更加灵活和可编程。

导入方式

要使用shutil库,只需在Python脚本或交互式环境中使用`import shutil`语句。例如:

```python

import shutil

```

2. 文件复制操作

shutil.copy()方法

功能描述:这个方法用于将一个文件从源路径复制到目标路径。如果目标路径是一个目录,那么会在该目录下创建一个与源文件同名的文件。

参数说明:它接受两个参数,第一个参数是源文件的路径,第二个参数是目标文件或目录的路径。例如,要将文件`/home/user/src.txt`复制到`/home/user/dest/`目录下,可以这样写:

```python

import shutil

shutil.copy('/home/user/src.txt', '/home/user/dest/')

```

注意事项:如果目标路径已经存在同名文件,那么会覆盖该文件。所以在使用时要确保不会意外覆盖重要数据。

shutil.copy2()方法

功能描述:和`shutil.copy()`类似,不过`shutil.copy2()`还会尽可能地保留文件的元数据(如文件的访问时间、修改时间等)。

参数说明:参数和`shutil.copy()`相同。例如:

```python

import shutil

shutil.copy2('/home/user/src.txt', '/home/user/dest/')

```

3. 文件移动操作

shutil.move()方法

功能描述:用于将文件或目录从一个位置移动到另一个位置。它可以用于重命名文件或目录,也可以将文件移动到其他目录。

参数说明:第一个参数是源文件或目录的路径,第二个参数是目标文件或目录的路径。例如,将文件`/home/user/src.txt`移动到`/home/user/dest/`目录下并改名为`new_src.txt`:

```python

import shutil

shutil.move('/home/user/src.txt', '/home/user/dest/new_src.txt')

```

注意事项:如果目标路径已经存在同名文件或目录,那么会根据具体情况进行覆盖或合并操作。当移动目录时,会递归地移动目录中的所有内容。

4. 文件和目录删除操作

shutil.rmtree()方法

功能描述:用于删除一个目录及其所有内容。这是一个比较危险的操作,因为一旦执行,目录下的所有文件和子目录都会被永久删除。

参数说明:它只接受一个参数,即要删除的目录的路径。例如,要删除`/home/user/dir_to_delete`目录:

```python

import shutil

shutil.rmtree('/home/user/dir_to_delete')

```

注意事项:使用时要非常小心,最好在操作之前备份重要的数据。因为没有回收站的概念,删除后很难恢复数据。

5. 文件归档操作(压缩与解压)

shutil.make_archive()方法

功能描述:用于创建一个归档文件(如zip、tar等格式)。它可以将一个目录及其内容打包成一个压缩文件,方便存储和传输。

参数说明:它有多个参数,其中`base_name`是归档文件的名称(不包括扩展名),`format`是归档文件的格式(如'zip'、'tar'等),`root_dir`是要归档的目录的路径。例如,将`/home/user/dir_to_archive`目录打包成一个zip文件:

```python

import shutil

shutil.make_archive('/home/user/archive', 'zip', '/home/user/dir_to_archive')

```

shutil.unpack_archive()方法

功能描述:用于解压缩归档文件。它可以识别多种归档格式,如zip、tar等,并将文件解压到指定的目录。

参数说明:`filename`是要解压的归档文件的路径,`extract_dir`是解压后的文件存放的目录路径。例如,解压`/home/user/archive.zip`文件到`/home/user/extracted_dir`目录:

```python

import shutil

shutil.unpack_archive('/home/user/archive.zip', '/home/user/extracted_dir')

```

相关文章

在 Python 中解压元组、列表和其他序列

Python 对解包序列的支持非常有用。拆包,也称为“多重赋值”或“迭代拆包”,是指在单个步骤中将序列中的值分配给多个变量的过程。此功能适用于元组、列表和其他可迭代序列。什么是可迭代拆包?考虑这个元组...

Python exe 文件反编译为 Python 脚本

前言将 Python 可执行文件(.exe)反编译为 Python 脚本是一项有趣的技术挑战,可以帮助我们理解程序的工作原理,以及可能包含的逻辑和算法。虽然反编译不是一项简单的任务,并且对于使用各种保...

python散装笔记——81: PyPI 软件包管理器: pip 模块的使用

有时,您可能需要在 python 中使用 pip 包管理器,例如,当某些导入可能引发 ImportError 时,您需要处理异常。如果在 Windows 上解压缩,Python_root/Script...

【Python语音识别系列】实现m4a到wav语音格式的批量转化(源码)

这是我的第388篇原创文章。一、引言在语音识别和音频处理领域,我们经常需要对音频文件格式进行转换,例如将 M4A 格式转为更常见的 WAV 格式。本文将基于pydub这个库批量实现m4a到wav语音格...

程序员调查 :程序员有哪些解压的方法

总所周知,想到程序员就想到的词有秃头、地中海、格子衫、死宅等等等等形象较差的词。这是为啥呢?程序员的鸭梨山大啊!不掉头发能行吗?作为一个入行很久的老手,刚进入咱们这个行业的实习生问我:“前辈,程序员压...