千家信息网

python模块shutil函数怎么用

发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,小编给大家分享一下python模块shutil函数怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!本文大纲os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一
千家信息网最后更新 2025年11月08日python模块shutil函数怎么用

小编给大家分享一下python模块shutil函数怎么用,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

本文大纲

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

知识串讲

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

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

结果如下:

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)

结果如下:

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

# 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)移动文件或文件夹

函数: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)

结果如下:

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

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)

结果如下:

6)创建和解压压缩包

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

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

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

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

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

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

① 创建一个压缩包

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

结果如下:

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

import zipfilewith 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函数怎么用"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

文件 文件夹 模块 黄伟 移动 目标 结果 函数 参数 含义 源文件 两个 会报 信息 单个 标准 目录 知识 篇文章 系统 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 首家网络安全责任险 pubg显示链接服务器错误 旌德软件开发商 如何让浏览器安全连接服务器 阿里云8266通讯开哪种服务器 目前常用的软件开发方法有 检测数据库失效的对象 北京中搜网络技术郑州分公司 万方具有哪个特色数据库 android看书软件开发 搭建一个服务器多少钱 网络技术专业用什么电脑 上海软件开发驻场服务公司 我的世界网易版惊变100天的服务器 自查网络安全报告 华为服务器带国产系统吗 红桥区项目网络技术不二之选 lol聊天服务器为什么会断开 数据库修改连接密码怎么修改 5g工业互联网剑桥科技 江苏道路管理软件开发 如何安装公安网络安全设备 联想sr630服务器raid 咸鱼之王能切服务器吗 网络安全性检测评估报告 检测数据库失效的对象 万德数据库行业分析报告 我的世界开单人被踢出服务器 中小型公司网络安全设计方案 上海共享数据库连接池开源
0