python模块shutil函数应用示例详解教程

作者:数据分析与统计学之美 时间:2022-09-29 02:07:36 

本文大纲

os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作。而Python另外一个标准库——shutil库,它作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作,这些 os 模块中一般是没有提供的。但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的。

python模块shutil函数应用示例详解教程

知识串讲

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

python模块shutil函数应用示例详解教程

1)模块导入


import shutil

2)复制文件

函数:shutil.copy(src,dst)含义:复制文件;参数:src表示源文件,dst表示目标文件夹;注意:当移动到一个不存在的“目标文件夹”,系统会将这个不存在的“目标文件夹”识别为新的文件夹,而不会报错;


# 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”识别为文件名,而不是按照我们认为的,移动到一个新的不存在的文件夹。
"""

结果如下:

python模块shutil函数应用示例详解教程

3)复制文件夹

函数:shutil.copytree(src,dst)

含义:复制文件夹;

参数:src表示源文件夹,dst表示目标文件夹;

注意:这里只能是移动到一个空文件夹,而不能是包含其他文件的非空文件夹,否则会报错PermissionError;

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


# 将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)

结果如下:

python模块shutil函数应用示例详解教程

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


# 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)

结果如下:

python模块shutil函数应用示例详解教程

4)移动文件或文件夹

函数:shutil.move(src,dst)

含义:移动文件/文件夹;

参数:src表示源文件/文件夹,dst表示目标文件夹;

注意:文件/文件夹一旦被移动了,原来位置的文件/文件夹就没了。目标文件夹不存在时,会报错;


# 将当前工作目录下的“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)

结果如下:

python模块shutil函数应用示例详解教程

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

5)删除文件夹(慎用)

函数:shutil.rmtree(src)

含义:删除文件夹;

参数:src表示源文件夹;

注意:区别这里和os模块中remove()、rmdir()的用法,remove()方法只能删除某个文件,mdir()只能删除某个空文件夹。但是shutil模块中的rmtree()可以递归彻底删除非空文件夹;


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

结果如下:

python模块shutil函数应用示例详解教程

6)创建和解压压缩包

zipobj.write():创建一个压缩包;

zipobj.namelist():读取压缩包中的文件信息;

zipobj.extract():将压缩包中的单个文件,解压出来;

zipobj.extractall():将压缩包中所有文件,解压出来;

shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的,因此需要导入这两个模块;

注意:这里所说的压缩包,指的是“.zip”格式的压缩包;

① 创建一个压缩包


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)

结果如下:

python模块shutil函数应用示例详解教程

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


import zipfile

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

结果如下:

python模块shutil函数应用示例详解教程

③ 将压缩包中的单个文件,解压出来 注意:目标文件夹不存在,会自动创建;


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)

结果如下:

python模块shutil函数应用示例详解教程

④ 将压缩包中所有文件,解压出来; 注意:目标文件夹不存在,会自动创建;


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函数应用示例详解教程

来源:https://huang-tong-xue.blog.csdn.net/article/details/108050152

标签:python,shutil
0
投稿

猜你喜欢

  • Python实现简单图像缩放与旋转

    2022-02-19 05:48:17
  • 本地计算机无法启动Apache故障处理

    2023-07-17 13:06:48
  • 解决pycharm修改代码后第一次运行不生效的问题

    2022-07-27 13:35:14
  • python实现通过队列完成进程间的多任务功能示例

    2022-06-25 03:49:27
  • Python如何将函数值赋给变量

    2022-01-01 22:58:22
  • MSSQL2005数据库备份导入MSSQL2000

    2024-01-22 12:59:56
  • Go语言中JWT的创建和解析操作详解

    2024-05-09 10:09:22
  • 完全卸载MYSQL

    2011-02-23 12:11:00
  • IE不支持border-spacing的解决办法

    2009-04-28 13:11:00
  • 发个选星星打分/投票功能函数

    2008-05-22 12:38:00
  • Mysql树形递归查询的实现方法

    2024-01-14 08:05:16
  • django 创建过滤器的实例详解

    2023-07-09 16:25:00
  • mysql修复数据表的命令方法

    2024-01-24 10:15:33
  • Python2与python3中 for 循环语句基础与实例分析

    2022-08-12 05:05:01
  • apache配置虚拟主机的方法详解

    2023-06-18 09:05:29
  • ASP网站数据采集经验谈

    2008-03-09 15:30:00
  • 3个比较好用的asp检查函数

    2007-09-24 13:25:00
  • Ubuntu安装Jupyter Notebook教程

    2021-03-12 03:14:58
  • 利用python在excel里面直接使用sql函数的方法

    2023-10-15 00:34:57
  • FCKeditor编辑器添加图片上传功能及图片路径问题解决方法

    2022-12-15 01:07:10
  • asp之家 网络编程 m.aspxhome.com