首页 > 其他分享 >shutil模块详解

shutil模块详解

时间:2024-09-09 18:51:26浏览次数:3  
标签:src shutil 文件 dst 详解 模块 import txt

shutil模块提供了一系列高级文件操作功能,包括复制、移动、删除和搜索文件或目录。shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的。

下面详细介绍并给出示例代码:

1. shutil.copy(src, dst)

复制文件,但不保留权限和时间戳等元数据。

import shutil

src = "source.txt"
dst = "destination.txt"

shutil.copy(src, dst)
print(f"File copied from {src} to {dst}.")
2. shutil.copy2(src, dst)

复制文件并保留权限、时间戳等元数据。

import shutil

src = "source.txt"
dst = "destination2.txt"

shutil.copy2(src, dst)
print(f"File copied from {src} to {dst} with metadata.")
3. shutil.copyfileobj(fsrc, fdst)

从一个文件对象复制数据到另一个文件对象。通常用于大文件的复制,因为它可以避免一次性读取整个文件到内存中。

import shutil
import os

src = "source.txt"
dst = "destination_fileobj.txt"

with open(src, 'rb') as fsrc:
    with open(dst, 'wb') as fdst:
        shutil.copyfileobj(fsrc, fdst)
print(f"File copied from {src} to {dst} using copyfileobj.")
4. shutil.copyfile(src, dst)

复制文件的内容,但不包括元数据(如权限和时间戳)。与shutil.copy()类似,但不会复制文件的权限和时间戳。

import shutil

src = "source.txt"
dst = "destination_file.txt"

shutil.copyfile(src, dst)
print(f"File content copied from {src} to {dst} without metadata.")
区别:shutil.copyfile() vs shutil.copyfileobj()
  • copyfile():适用于文件路径,直接从源文件复制到目标文件。
  • copyfileobj():适用于文件对象,适合处理大文件或流式复制,因为它可以避免一次性加载整个文件到内存中。
5. shutil.copytree(src, dst)

递归复制目录及其所有子目录和文件。

import shutil

src = "source_directory"
dst = "destination_directory"

shutil.copytree(src, dst)
print(f"Directory {src} copied to {dst}.")
6. shutil.rmtree(path)

递归删除目录及其所有子目录和文件。

import shutil

path = "destination_directory"

shutil.rmtree(path)
print(f"Directory {path} removed recursively.")
7. shutil.move(src, dst)

移动文件或目录,也可以用于重命名文件或目录。

import shutil

src = "source.txt"
dst = "moved_source.txt"

shutil.move(src, dst)
print(f"File {src} moved to {dst}.")
8. shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None)

在PATH环境变量中查找可执行文件的位置。类似于Unix的which命令。

import shutil

cmd = "python"

result = shutil.which(cmd)
if result:
    print(f"{cmd} found at {result}")
else:
    print(f"{cmd} not found.")
9. shutil.copyfileobj(fsrc, fdst[, length])

从一个文件对象fsrc复制数据到另一个文件对象fdst。这通常用于大文件的复制,因为它可以避免一次性读取整个文件到内存中。

import shutil

with open('file1.txt', 'rb') as src:
    with open('file2.txt', 'wb') as dst:
        shutil.copyfileobj(src, dst)
10. shutil.copyfile(src, dst)

复制文件的内容,但不包括元数据(如权限、所有权和时间戳)。它直接从源文件路径复制到目标文件路径。

import shutil

shutil.copyfile('file1.txt', 'file2.txt')
11. shutil.copymode(src, dst)

复制文件的模式(权限),但不复制文件内容或所有权。如果目标文件已存在,它的权限将被更新为与源文件相同。

import shutil

shutil.copymode('file1.txt', 'file2.txt')
12. shutil.copystat(src, dst)

复制文件的所有状态信息,包括权限、组、用户和时间戳,但不包括文件内容。如果目标文件已存在,它的状态信息将被更新为与源文件相同。

import shutil

shutil.copystat('file1.txt', 'file2.txt')
13. shutil.copy(src, dst)

复制文件的内容和权限。相当于先执行了copyfile再执行了copymode

import shutil

shutil.copy('file1.txt', 'file2.txt')
14. shutil.copy2(src, dst)

复制文件的内容及其所有状态信息。相当于先执行了copyfile再执行了copystat

import shutil

shutil.copy2('file1.txt', 'file2.txt')
15. shutil.copytree(src, dst[, symlinks=False[, ignore=None]])

递归复制整个目录树。symlinks参数决定是否复制符号链接,ignore参数可以指定一个函数来忽略某些文件或目录。

import shutil

shutil.copytree('source_directory', 'destination_directory')
其他方法
  • shutil.move(src, dst)
    移动文件或目录。这类似于重命名操作,但可以在不同的文件系统之间移动。
import shutil

shutil.move('file1.txt', 'new_directory/')
  • shutil.make_archive(base_name, format, root_dir[, base_dir[, owner[, group[, dry_run[, logger]]]]])
    创建存档文件,如zip或tar包。
import shutil

shutil.make_archive('archive', 'zip', 'directory_to_compress')
  • shutil.unpack_archive(filename[, extract_dir[, format]])
    解压缩存档文件。
import shutil

shutil.unpack_archive('archive.zip', 'extracted_directory')
  • shutil.which(cmd[, path])
    在环境变量PATH中查找可执行文件的位置,类似于Unix的which命令。
import shutil

print(shutil.which('python'))

通过以上示例,你应该能够理解和使用shutil模块中的一些关键方法。这些方法提供了比os模块更高级的文件和目录操作功能,适合于需要进行复杂文件管理的任务。

引用链接:Python模块——shutil模块详解_数据分析与统计学之美-GitCode 开源社区 (csdn.net)

标签:src,shutil,文件,dst,详解,模块,import,txt
From: https://blog.csdn.net/KIKI3666/article/details/141992492

相关文章

  • 关于schneider施耐德140模块
    SCHNEIDER140模块是施耐德电气(SchneiderElectric)公司生产的一系列工业自动化和控制产品,这些模块通常用于Quantum系列PLC(可编程逻辑控制器)系统中,以实现各种自动化和控制任务。以下是对SCHNEIDER140模块的一些详细介绍:一、模块类型与功能SCHNEIDER140模块包括但不限于以下......
  • 功率单元和功率模块有什么区别?
        功率单元和功率模块在电力电子领域中各自扮演着重要角色,它们之间存在明显的区别,主要体现在以下几个方面:一、定义与构成功率单元:指的是集成在一块PCB(印刷电路板)上的功率转换电路模块,通常由MOSFET、IGBT(绝缘栅双极型晶体管)或SiCMOSFET等功率半导体器件构成。它能够......
  • Unity框架(场景切换模块)
    1、为什么要制作场景切换模块在游戏开发中很多时候可能需要进行场景切换只要存在场景切换,我们往往需要在切换场景时和切换场景结束后进行一些操作2、实现场景切换模块的主要思路1.制作SceneMgr单例模式管理器2.实现同步加载场景的公共方法3.实现异步加载场景的公共......
  • SCI论文审稿的13种状态详解
    SCI论文审稿的13种状态1.Submittedtojournal(稿件提交)代表文章提交成功。在这一阶段,需要作者确认自己所提交的文件是否符合期刊的投稿要求,包括格式、内容、摘要、参考文献等,同时也要留意期刊的审核时间和流程。2.ManuscriptreceivedbyEditorialoffice(收到稿件......
  • Linux top 命令详解
    Linuxtop命令详解主要功能和用途实时监控:提供一个实时的、动态的视图,展示系统当前的状态。进程管理:允许用户查看系统中各个进程的运行状态。资源监控:CPU使用情况:监控CPU的总体使用率、用户空间占用率、系统空间占用率等。内存使用情况:展示物理内存和交换空间(swap)的使用......
  • 常用的linux命令以及详解
    Linux系统中包含了大量的命令,这些命令是用户与系统交互的主要方式。以下是一些常用的Linux命令及其详细解释:1.文件和目录操作ls:列出目录内容。ls:列出当前目录的文件和子目录。ls-l:以长格式列出文件和目录,包括权限、所有者、大小和修改时间。ls-a:显示所有文件,包括隐藏文......
  • 【高级编程】实用类详解(补充)StringBuffer类 和 StringBuilder类
    文章目录为什么使用StringBuffer?StringBuffer1.声明2.常用方法3.举例4.时间戳StringBuilderStringBufferVSStringBuilder为什么使用StringBuffer?StringBuffer是Java中的一个可变字符序列类,允许在原始对象上进行修改,而不会生成新的字符串对象。与String比较......
  • 【高级编程】实用类详解(下)万字整理Java时间日期类 JDK8新日期
    文章目录日期时间DateSimpleDateFormatCalendarJDK8新日期LocalDateTime&LocalDate&LocalTimeDateTimeFormater计算Period&DurationzonedDateTimeInstant类型转换注意事项日期时间Datejava.util.Date类:表示日期和时间。提供操作日期和时间各组成部分的方法。......
  • 【Material-UI】Stepper 组件中的 Vertical Stepper 和 Mobile Stepper 详解
    文章目录一、VerticalStepper组件概述1.组件介绍2.核心功能二、VerticalStepper的使用场景1.适合移动端的垂直布局2.高效的步骤管理三、MobileStepper组件概述1.组件介绍2.MobileStepper的核心功能1)Text文本显示2)Dots小圆点显示3)Progress进度条......
  • 推荐一个Python流式JSON处理模块:streaming-json-py
    每天,我们的设备、应用程序和服务都在生成大量的数据流,这些数据往往大多是以JSON格式存在的。如何高效地解析和处理这些JSON数据流是一大挑战。今天,我要为大家介绍一个能极大简化这一过程的利器:streaming-json-pystreaming-json-py介绍streaming-json-py是一个专为实时......