Python的shutil模块探索,文件操作的瑞士军刀

hello,大家好,我是一点,专注于Python编程,如果你也对感Python感兴趣,欢迎关注交流。

希望可以持续更新一些有意思的文章,如果觉得还不错,欢迎点赞关注,有啥想说的,可以留言或者私信交流。

如果你想看什么主题的文章,欢迎留言交流,关注公众号【一点sir】,领取编程资料。

引言

在Python的标准库中,shutil模块是一个强大的工具,用于文件的高级操作。与基本的文件I/O操作不同,shutil提供了文件复制、删除、移动、压缩和解压等高级功能。本文将深入探索shutil模块,展示如何使用它来简化文件处理任务。

shutil模块概览

shutil是“shell utilities”的缩写,意味着这个模块提供了类似shell命令的文件操作功能。它包括但不限于以下几个方面:

  • 文件复制(copy(), copy2()
  • 文件删除(rmtree()
  • 文件移动(move()
  • 归档压缩与解压(make_archive(), unpack_archive()
  • 文件系统大小统计(disk_usage()

文件复制

复制文件是shutil的一个基本功能。copy()copy2()都可用于复制文件,但copy2()还会尝试保留文件的元数据。

import shutil# 复制文件
shutil.copy(src='source.txt', dst='destination.txt')# 复制文件并保留元数据
shutil.copy2(src='source.txt', dst='destination.txt')

文件删除

rmtree()函数可以递归地删除目录及其包含的所有子目录和文件。

# 删除目录及其内容
shutil.rmtree(path='directory_to_delete')

文件移动

move()函数可以在文件系统内移动文件或目录。

# 移动文件
shutil.move(src='source.txt', dst='destination.txt')

归档压缩与解压

shutil可以创建压缩归档,并支持多种格式,如zip,tar等。unpack_archive()用于解压这些归档。

# 创建zip归档
shutil.make_archive(base_name='archive', format='zip', root_dir='directory_to_zip')# 解压归档
shutil.unpack_archive(filename='archive.zip', extract_dir='destination_dir')

文件系统大小统计

disk_usage()提供了一种方法来获取文件系统磁盘使用情况的统计信息。

# 获取磁盘使用情况
disk_usage = shutil.disk_usage(path='.')
print(disk_usage)

安全性和异常处理

使用shutil时,异常处理非常重要,因为它涉及到文件系统的操作,可能会遇到权限错误、磁盘空间不足等问题。

# 异常处理示例
try:shutil.copy(src='source.txt', dst='destination.txt')
except IOError as e:print(f"无法复制文件: {e}")

结论

shutil模块是Python中处理文件和目录的有力工具。它提供了简单易用的函数来执行常见的文件操作任务,使文件管理变得更加高效。通过本文的探索,我们了解到shutil不仅可以简化日常的文件操作,还能够处理复杂的归档和磁盘使用统计任务。掌握shutil模块,将大大提高Python文件操作的能力和灵活性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/14403.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

每周刷题第三期

个人主页:星纭-CSDN博客 系列文章专栏:Python 踏上取经路,比抵达灵山更重要!一起努力一起进步! 目录 题目一:环形链表 题目二:删除有序数组中的重复项 题目三:有效的括号 题…

从左上角到右下角的最小距离和

题目描述:给定一个二维数组matrix,一个人必须从左上角出发,最后到达右下角,沿途只可以向下或者向右走,沿途的数字都累加就是距离累加和,返回最小距离累加和。 way:无他,dp[i] [j]表…

《队列》

描述 学校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人。分别排成每行4、5、6人,都多出1人。当排成每行7人时,正好不多,求校体操队至少多少人。 输入描述 无 输出描述 满足要求的人数 样例输入…

Python语法学习之 - 生成器表达式(Generator Expression)

第一次见这样的语法 本人之前一直是Java工程师,最近接触了一个Python项目,第一次看到如下的代码: i sum(letter in target_arr for letter in source_arr)这条语句是计算source 与 target 数组中有几个单词是相同的。 当我第一眼看到这样…

shell遍历路径所有文件并把列表写成字符串遍历

1. ls dir/* | tr ‘\n’ ’ ’ 换行替换成空格 你可以使用 ls 命令和 tr 命令来将文件列表根据空格拼接起来成一个字符串。以下是一个示例: ls dir/* | tr \n 解释 ls dir/*:列出 dir 目录下的所有文件。tr \n :将所有的换行符&#xf…

ChatGPT生成常见面试题【面试准备】

ChatGPT生成常见面试题【面试准备】 前言版权ChatGPT生成常见面试题【面试准备】MySQL面试问题与回答1. 数据库连接与操作2. 索引和查询优化3. 事务管理4. 索引是什么?为什么使用索引可以提高查询性能?如何在MySQL中创建索引?5. SQL查询优化有…

Varjo XR-4功能详解:由凝视驱动的XR自动对焦相机系统

Varjo是XR市场中拥有领先技术的虚拟现实设备供应商,其将可变焦距摄像机直通系统带入到虚拟和混合现实场景中。在本篇文章中,Varjo的技术工程师维尔蒂莫宁详细介绍了这项在Varjo XR-4焦点版中投入应用的技术。 对可变焦距光学系统的需求 目前所有其他XR头…

WPF之容器标签之Canvas布局标签

Canvas: 定义一个区域&#xff0c;可在其中使用相对于 Canvas 区域的坐标以显式方式来定位子元素。 实例 可以在子标签使用Canvas属性设置定位 <Canvas Width"500" Height"300"><StackPanel Width"100" Height"100"Backgro…

网页抓取之requests库的使用

Python网络数据采集利器 - Requests库的使用指南 简介 在Python网络爬虫领域,优秀的第三方库Requests可谓是必学的重要工具。它提供了相当人性化的API,让我们能够用极其简洁的代码发送HTTP/HTTPS请求,并且自动处理cookies、headers、编码等诸多繁琐细节,大大减轻了网页抓取的…

【pdb的使用方法】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、 pdb 是什么&#xff1f;二、基本用法1.启动 PDB 调试器&#xff1a;2.单步执行代码&#xff1a;3.查看变量值&#xff1a;4.退出调试器&#xff1a; 三、高级用…

指数分布的理解,推导与应用

指数分布的定义 在浙大版的教材中&#xff0c;指数分布的定义如下&#xff1a; 若连续型的随机变量 X X X的概率密度为&#xff1a; f ( x ) { 1 θ e − x θ , x>0 0 , 其他 f(x) \begin{cases} \frac{1}{\theta} e^{-\frac{x}{\theta}}, & \text{x>0}\\ 0, &a…

mvn编译所有单元测试报错OOM

org.mockito.exceptions.base.MockitoException: Cannot instantiate InjectMocks field named ‘productLogic’ of type ‘class .ProductLogic’. You haven’t provided the instance at field declaration so I tried to construct the instance. However the constructo…

Python正则表达式与Excel文件名批量匹配技术文章

目录 引言 正则表达式基础 Python中的re模块 Excel文件名批量匹配案例 常见问题与解决方案 结论 引言 在现代办公环境中&#xff0c;Excel文件几乎成为了数据分析和处理的标配工具。由于Excel文件可能包含大量的数据和信息&#xff0c;因此&#xff0c;对Excel文件的命名…

在aspNetCore中 使用System.Text.Json的定制功能, 将定制化的json返回给前端

C# 默认大写, 而大部分的前端默认小写, 这时候可以如此配置: builder.Services.AddControllers().AddJsonOptions((opt) > {opt.JsonSerializerOptions.PropertyNamingPolicy System.Text.Json.JsonNamingPolicy.CamelCase;opt.JsonSerializerOptions.WriteIndented true…

DSPF网络类型实验1

对R6配置 对R1配置 对R2 对R3 对R4 对R5 对R1R2R3R4R5加用户 环回处理 然后开始配置缺省 R1有两个下一跳 3&#xff0c;4&#xff0c;5同R2 然后对R1 dynamic动态 对R2 手写 把注册加上 register R3同R2处理

机柜里面的设备有哪些

一、服务器 服务器是机柜中最常见的设备之一。它们通常被用于存储和运行数据、应用程序和服务。不同的服务器通常使用不同的操作系统和处理器架构&#xff0c;以满足不同的需求。服务器可以使用冗余电源和冗余存储空间等措施&#xff0c;以确保数据安全和可靠性。 二、交换机 交…

删除链表的倒数第N个节点-力扣

第一种方法是使用前后指针&#xff0c;前指针先向前走n1步&#xff0c;然后前后指针同时向前&#xff0c;当前指针指向NULL时&#xff0c;后指针正好指向需要删除的节点的前一个节点&#xff0c;操作后指针删除即可。 代码如下&#xff1a; /*** Definition for singly-linked…

医学图像分割

论文&#xff1a;Medical Image Segmentation Using Deep Learning: A Survey 参考&#xff1a;[医学图像分割综述] Medical Image Segmentation Using Deep Learning: A Survey-CSDN博客 一、背景 特征表示的困难&#xff1a;模糊、噪声、对比度低--->CNN属于语义分割&a…

Web Server项目实战2-Linux上的五种IO模型

上一节内容的补充&#xff1a;I/O多路复用是同步的&#xff0c;只有调用某些API才是异步的 Unix/Linux上的五种IO模型 a.阻塞 blocking 调用者调用了某个函数&#xff0c;等待这个函数返回&#xff0c;期间什么也不做&#xff0c;不停地去检查这个函数有没有返回&#xff0c…