文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python模块shutil函数怎么用

2023-06-25 10:46

关注

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

本文大纲

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 zipfileimport osfile_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 zipfilewith 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函数怎么用

看完了这篇文章,相信你对“python模块shutil函数怎么用”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯