python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python的shutil模块

Python中的shutil模块使用详解

作者:数据分析与统计学之美

这篇文章主要介绍了Python中的shutil模块使用详解,shutil库作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作,这些 os 模块中一般是没有提供的,需要的朋友可以参考下

本文大纲

os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作。

而Python另外一个标准库——shutil库,它作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作,这些 os 模块中一般是没有提供的。

但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的。

在这里插入图片描述

知识串讲

本文所使用的素材,都是基于以下2个文件夹,其中一个文件夹为空。

在这里插入图片描述

1)模块导入

import shutil

2)复制文件

# 1.将a表的“data.txt”移动到b表
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b"
shutil.copy(src,dst)
------------------------------------------------------------
# 2.将a表的“data.txt”移动到b表,并重新命名为“new_data.txt”
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b\new_data.txt"
shutil.copy(src,dst)
------------------------------------------------------------
# 3.将a表的“data.txt”移动到“不存在”的文件夹
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a\data.txt"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
shutil.copy(src,dst)
"""
注意:对于情况3,系统会默认将“test_shutil_c”识别为文件名,而不是按照我们认为的,移动到一个新的不存在的文件夹。
"""

结果如下:

在这里插入图片描述

3)复制文件夹

 ① 如果目标文件夹中存在其他文件,会报错;

# 将a文件夹移动到b文件夹,由于前面的操作,此时b文件夹中已经有其他文件
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b"
shutil.copytree(src,dst)

结果如下:

在这里插入图片描述

② 如果指定任意一个目标文件夹,则会自动创建;

# c文件夹原本是不存在的,我们使用了下方的代码,会自动创建该文件夹
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
shutil.copytree(src,dst)

结果如下:

在这里插入图片描述

4)移动文件或文件夹

# 将当前工作目录下的“a.xlsx”文件,移动到a文件夹下
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
shutil.move("a.xlsx",dst)
----------------------------------------------------------------
# 将a文件夹下的“a.xlsx”文件,移动到b文件夹中,并重新命名为“aa.xlsx”
src = r"C:/Users/黄伟/Desktop/publish/os模块/test_shutil_a\a.xlsx"
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_b\aa.xlsx"
shutil.move(src,dst)

结果如下:

在这里插入图片描述

注意:移动文件夹操作类似,我这里就不赘述了,自行下去学习。

5)删除文件夹(慎用)

# 将c文件夹彻底删除
src = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_c"
shutil.rmtree(src)

结果如下:

在这里插入图片描述

6)创建和解压压缩包

① 创建一个压缩包

import zipfile
import os
file_list = os.listdir(os.getcwd())
# 将上述所有文件,进行打包,使用“w”
with zipfile.ZipFile(r"我创建的压缩包.zip", "w") as zipobj:
    for file in file_list:
        zipobj.write(file)

结果如下:

在这里插入图片描述

② 读取压缩包中的文件信息

import zipfile
with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    print(zipobj.namelist())

结果如下:

在这里插入图片描述

③ 将压缩包中的单个文件,解压出来

import zipfile
# 将压缩包中的“test.ipynb”文件,单独解压到a文件夹下
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_a"
with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    zipobj.extract("test.ipynb",dst)

结果如下:

在这里插入图片描述

④ 将压缩包中所有文件,解压出来;

import zipfile
# 将压缩包中的所有文件,解压到d文件夹下
dst = r"C:\Users\黄伟\Desktop\publish\os模块\test_shutil_d"
with zipfile.ZipFile("我创建的压缩包.zip", "r") as zipobj:
    zipobj.extractall(dst)

结果如下:

在这里插入图片描述

到此这篇关于Python中的shutil模块使用详解的文章就介绍到这了,更多相关Python的shutil模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文