【Python】shutil库的介绍及用法

目录

1、应用场景

2、shutil-标准库

1、应用场景

Python的shutil库主要用于文件的读取、创建、复制、删除、移动等操作,以下是一些典型的使用场景:

  1. 复制文件: 使用shutil.copy(src, dst)可以复制一个文件。源和目标位置都可以是文件也可以是目录。源文件的路径和文件名不会改变。
  2. 复制文件夹: 使用shutil.copytree(src, dst)可以复制整个目录以及其中的所有文件和子目录。
  3. 移动文件/文件夹: 使用shutil.move(src, dst)可以移动文件或文件夹到指定位置。
  4. 删除非空文件夹: 使用shutil.rmtree(path)可以删除一个目录以及所有包含的文件和子目录。
  5. 压缩文件/文件夹:shutil库也支持对文件或文件夹进行压缩,可用shutil.make_archive()。
  6. 自定义复制: 例如只复制文件的权限、最后访问时间、最后修改时间等,shutil.copy2()就可以完成。

这些操作大大简化了Python对于文件和文件集合的处理,尤其是在做一些需要大量文件操作的任务时,比如备份、系统部署等。

2、shutil-标准库

shutil 是 Python 的标准库之一。它提供了一些方便的文件操作函数,比如复制、移动、删除文件等。这个库的主要目的是对文件和文件集合的高级操作提供支持。shutil模块基本上就是在os模块的基础上的扩展,主要提供了文件的复制、删除和移动等功能。

Python中的shutil模块,全称叫shell工具模块,提供了一些便捷的文件操作方法。

  1. 复制文件:
shutil.copyfile(src, dst)

上述代码会将源文件路径src的文件复制到目标文件路径dst,并返回目标文件路径。src和dst都必须是字符串。

  1. 复制文件夹:
shutil.copytree(src, dst)

上述代码会把整个文件夹从源路径复制到目标路径,并返回目标路径。类似于Unix命令cp -R src dst。

  1. 移动文件或文件夹:
shutil.move(src, dst)

上述代码会把源路径文件/文件夹移动到目标路径。类似于Unix命令mv src dst。

  1. 删除非空文件夹:
shutil.rmtree(path)

上述代码会删除路径下的文件/文件夹,为非空路径,无论是否为空,都能删除。

以上是shutil模块中常用的几个函数,还有很多其他功能,如文件和目录的管理、查找、归档等操作,可以根据需要使用。

除了上述的一些方法外,shutil模块中还包含一些其他实用的方法,如:

  • shutil.copy(src, dst, *, follow_symlinks=True): 这个方法将复制源文件到目标路径。如果目标路径是一个目录,则在该目录中创建一个源文件的副本,并保持文件名不变。此方法也能够复制源文件的权限。
  • shutil.copy2(src, dst, *, follow_symlinks=True): 这个方法与copy()的功能相同,但在复制文件的同时,它还会试图保留源文件的元数据,包括时间戳。
  • shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None): 此函数返回可执行文件的路径,它的操作类似于 Unix 的 which 命令。
  • shutil.disk_usage(path): 返回指定路径的磁盘使用情况,包括总容量、已使用和剩余容量。
  • shutil.make_archive(base_name, format, root_dir=None, base_dir=None, **kwargs): 创建压缩包并返回文件路径,例如:zip、tar。
  • 等等。

总的来说,shutil模块中包含了许多操作文件和文件夹的实用工具函数,使得我们能够方便快捷地在 Python 代码中处理文件和文件夹。

以下是一些使用shutil库的常见实例:

  1. 复制文件:
import shutil
shutil.copyfile('test.txt', 'copy_test.txt')  # 会创建一个新文件'copy_test.txt',拷贝'test.txt'内的内容
  1. 复制文件夹:
import shutil
shutil.copytree('/path/to/directory', '/path/to/new_directory')  # 复制整个目录和其中的所有内容到新的位置
  1. 移动文件或文件夹:
import shutil
shutil.copyfile('test.txt', 'copy_test.txt')  # 会创建一个新文件'copy_test.txt',拷贝'test.txt'内的内容
  1. 删除非空文件夹:
import shutil
shutil.rmtree('/path/to/directory')  # 删除'/path/to/directory'及其所有内容
  1. 查询磁盘使用情况:
import shutil
usage = shutil.disk_usage("/")
print("Total: %d GiB" % (usage.total // (2**30)))
print("Used: %d GiB" % (usage.used // (2**30)))
print("Free: %d GiB" % (usage.free // (2**30)))

这段代码将打印出磁盘的总容量、已使用和剩余容量(单位为GiB)。

  1. 创建压缩包:
import shutil
shutil.make_archive('archive_name', 'zip', '/path/to/directory')  # 创建一个zip压缩包,包含'/path/to/directory'中的所有文件

注意:以上的代码中, '/path/to/directory' 和 'archive_name' 应替换为你实际的文件或目录路径。

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

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

相关文章

ChatGPT免费使用网站分享大全,可以直接访问

方法在结尾 介绍: ChatGPT是OpenAI公司开发的一种基于大规模预训练的语言模型。作为GPT-3系列的最新版本,GPT-3.5 Turbo集成了最新的技术改进,具备了更强大的对话生成能力。 GPT-3.5 Turbo是一个自动对话系统,它能够理解和生成…

Linux使用git命令行教程

. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 git安装git仓库的创建.git 文件添加文件git 三板斧(add,commit,push)解释拓展git log.gitignore git安装 首先输入git --version看看有没有安装git 如…

Python语言在编程业界的地位——《跟老吕学Python编程》附录资料

Python语言在编程业界的地位——《跟老吕学Python编程》附录资料 ⭐️Python语言在编程业界的地位2024年3月编程语言排行榜(TIOBE前十) ⭐️Python开发语言开发环境介绍1.**IDLE**2.⭐️PyCharm3.**Anaconda**4.**Jupyter Notebook**5.**Sublime Text** …

操作系统——cpu、内存、缓存介绍

一、内存是什么 内存就是系统资源的代名词,它是其他硬件设备与 CPU 沟通的桥梁, 计算机中的所有程序都在内存中运行。其作用是暂时存放CPU的运算数据,以及与硬盘交换的数据。也是相当于CPU与硬盘沟通的桥梁。只要计算机在运行,CP…

【C++那些事儿】深入理解C++类与对象:从概念到实践(下)| 再谈构造函数(初始化列表)| explicit关键字 | static成员 | 友元

📷 江池俊:个人主页 🔥 个人专栏:✅C那些事儿 ✅Linux技术宝典 🌅 此去关山万里,定不负云起之望 文章目录 1. 再谈构造函数1.1 构造函数体赋值1.2 初始化列表1.3 explicit 关键字 2. static成员2.1 概念…

PostgreSQL9.6迁移至16.2

由于更换服务器,需要将原服务器上的应用迁移至新服务器。旧服务器应用环境为.NET4.0+PostgreSQL9.6,新服务器应用环境为.NET4.0+PostgreSQL16.2。 1、备份数据库 在旧服务器中,使用 pg_dump 命令进行备份。 pg_dump -U username -W -F c -f backup_file.pgdump database_…

python基本使用

set1 {1, 2, 3, 4, 56} set2 {"123", "abc", 123}print(set1) # print(set1[1]) print(set2)for s1 in set2:print(s1)pass 更多python 用法 看gitee.com代码库 python-study: python study

进程pid=0是什么意思

在操作系统中,进程是指正在运行中的程序实例。每个进程都有一个唯一的标识符,称为进程ID(Process ID),通常简称为PID。 进程的PID是一个非负整数,用来唯一标识该进程。PID0通常被保留给操作系统内核进程&a…

EasyPoi 教程

文章目录 EasyPoi教程文档1. 前传1.1 前言 这个服务即将关闭,文档迁移到 http://www.wupaas.com/ 请大家访问最新网站1.2 Easypoi介绍1.3 使用1.4 测试项目1.5 可能存在的小坑 2. Excel 注解版2.1 Excel导入导出2.2 注解注解介绍ExcelTargetExcelEntityExcelCollectionExcelIgn…

【PTA】L1-026 L1-027(c++) L1-028 L1-029 L1-030 L1-031(C)第五天

目录 L1-026 I Love GPLT 题解: L1-027 出租 题解(c): L1-028 判断素数 题解: L1-029 是不是太胖了 题解: L1-030 一帮一 题解: L1-031 到底是不是太胖了 题解: L1-026 I…

智慧城市与数字经济:共创城市新价值

随着科技的快速发展,智慧城市与数字经济已成为推动城市现代化进程的重要引擎。它们不仅提升了城市治理的效率和公共服务水平,还为城市经济发展注入了新的活力。本文旨在探讨智慧城市与数字经济如何共同创造城市新价值,并分析其面临的挑战与发…

R语言复现:如何利用logistic逐步回归进行影响因素分析?

Logistic回归在医学科研、特别是观察性研究领域,无论是现况调查、病例对照研究、还是队列研究中都是大家经常用到的统计方法,而在影响因素研究筛选自变量时,大家习惯性用的比较多的还是先单后多,P<0.05纳入多因素研究&…

Thingsboard组件生命周期:

组件生命周期: onInit():初始化图表,部件加载完后第一个触发的函数,用于部件初始化,触发函数表示部件DOM可使用,可以在此函数处理小部件和初始订阅消息:如为一个按钮增加一个点击事件 onDataUpdated():监听…

【考研学子必看 ★2024考研国家线及调剂策略(2)】

----------------------------------------------------------------------------------------------------- 考研复试科研背景提升班 教你快速深入了解掌握考研复试面试中的常见问题以及注意事项,系统的教你如何在短期内快速提升自己的专业知识水平和编程以及英语…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:TimePicker)

时间选择组件,根据指定参数创建选择器,支持选择小时及分钟。 说明: 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 子组件 无 接口 TimePicker(options?: TimePickerOptions)…

银河麒麟V10SP3操作系统-网络时间配置

1、动态网络配置 打开终端,以网口 eth0 为例: nmcli conn add connection.id eth0-dhcp type ether ifname eth0 ipv4.method auto其中“eth0-dhcp”为连接的名字,可以根据自己的需要命名方便记忆和操作 的名字;“ifname eth0”…

CVE-2023-49442 利用分析

1. 漏洞介绍 JEECG(J2EE Code Generation) 是开源的代码生成平台,目前官方已停止维护。JEECG 4.0及之前版本中,由于/api接口鉴权时未过滤路径遍历,攻击者可构造包含 ../ 的url绕过鉴权。攻击者可构造恶意请求利用 jeecgFormDemoController.do…

Redis安装(单机、主从、哨兵、集群)

一、单机安装Redis 首先需要安装Redis所需要的依赖: yum install -y gcc tcl 复制 下载Redis wget https://gitcode.net/weixin_44624117/software/-/raw/master/software/Linux/Redis/redis-6.2.4.tar.gz 复制 创建安装目录 mkdir /usr/local/redis 复制 …

LeetCode541 - 反转字符串二

LeetCode541 - 反转字符串二 给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。 如果剩余字符少于 k 个,则将剩余字符全部反转。 如果剩余字符小于 2k 但大于或等于 k 个&am…

走进AI新时代:织信低代码的实践与启示

最近 AIGC 很火,在各个领域都玩出了一些新花样。 比如在“低代码”领域,可以通过 AI 自动生成一个网站门户。 但这会带来开发效率的提升吗?如果 AI 能快速开发网站、APP等业务应用,那么 AI 生成能否完全取代低代码的可视化配置&a…