Python shutil 库详解

liftword1周前 (03-06)技术文章5

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

pyinstaller打包python程序高级技巧

pyinstaller是最常用的python程序打包成可执行程序(exe)的工具,这篇文章将介绍几个pyinstaller打包可能遇到的问题及其解决方法。安装pyinstaller的安装很简单,直接p...

Python exe 文件反编译为 Python 脚本

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

必知必会!10个Python超实用技巧

技巧一:快速赋值与解包在 Python 中,通过列表给多个变量赋值是一项非常实用的技巧。假设我们有一个包含三个元素的列表[1, 2, 3],想要将这三个元素分别赋值给三个变量a、b、c,只需简单地写成...

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

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

使用 Python 让旧照片修复清晰

翻开家里的的相片册,可以看到每张照片都是那么的弥足珍贵,特别是很久以前的照片,都是美好的回忆,还有那些年错过的场景,都被记录下来了,不过可惜的是,随着时间的流逝,照片可能泛黄,出现划痕,画质损失等等,...