Python全栈之路标准库系列之shutil模块

【Python】shutil库的介绍及用法 shutil 是 Python 的标准库之一。shutil模块基本上就是在os模块的基础上的扩展,主要提供了文件的复制、删除和移动等功能。总的来说,shutil模块中包含了许多操作文件和文件夹的实用工具函数,使得我们能够方便快捷地在 Python 代码中处理文件和文件夹。这些操作大大简化了Python对于文件和文件集合的处理,尤其是在做一些需要大量文件操作的任务时,比如备份、系统部署等。以上是shutil模块中常用的几个函数,还有很多其他功能,如文件和目录的管理、查找、归档等操作,可以根据需要使用。 阅读详情

对文件、文件夹、压缩包进行处理的模块。

官方文档:https://docs.python.org/3.5/library/shutil.html

文件和目录操作

shutil.copyfileobj(fsrc, fdst[, length])

将文件内容拷贝到另一个文件中

在学习过程中有什么不懂得可以加我的
python学习交流扣扣qun,784758214
群里有不错的学习视频教程、开发工具与电子书籍。
与你分享python企业当下人才需求及怎么从零基础学习好python,和学习什么内容
>>> import shutil
# 循环读取old.txt文件内容并写入到new.txt文件当中
>>> shutil.copyfileobj(open('old.txt','r'), open('new.txt', 'w'))
>>> import os
# 查看复制过去的文件内容
>>> os.system("cat old.txt new.txt") 
old
old
0

*shutil.copyfile(src, dst, , follow_symlinks=True)

拷贝整个文件,没有第二个文件就创建,有就覆盖

>>> os.system("cat old.txt new.txt")
old
new
0
>>> shutil.copyfile('old.txt', 'new.txt')
# 把第二个文件内容给覆盖了
>>> os.system("cat old.txt new.txt")     
old
old
0

*shutil.copymode(src, dst, , follow_symlinks=True)

仅拷贝文件权限,文件的内容、组、用户均不变

>>> os.system("ls -l old.txt new.txt")    
-rw-rw-rw- 1 ansheng ansheng 4 5月  26 15:54 new.txt
-rw-rw-r-- 1 ansheng ansheng 4 5月  26 15:52 old.txt
0
>>> shutil.copymode('old.txt', 'new.txt')
# 文件权限都变成644了
>>> os.system("ls -l old.txt new.txt")   
-rw-rw-r-- 1 ansheng ansheng 4 5月  26 15:54 new.txt
-rw-rw-r-- 1 ansheng ansheng 4 5月  26 15:52 old.txt
0

*shutil.copystat(src, dst, , follow_symlinks=True)

拷贝文件状态的信息,文件必须存在,不copy改动时间

>>> os.system("stat old.txt new.txt")  
  文件:'old.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835014     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612241 +0800
最近更改:2016-05-26 15:52:54.830640166 +0800
最近改动:2016-05-26 15:52:54.830640166 +0800
创建时间:-
  文件:'new.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835024     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:56:22.540041783 +0800
最近更改:2016-05-26 15:54:24.244922722 +0800
最近改动:2016-05-26 15:55:38.353967649 +0800
创建时间:-
0
>>> shutil.copystat('old.txt', 'new.txt')
>>> os.system("stat old.txt new.txt")    
  文件:'old.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835014     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612241 +0800
最近更改:2016-05-26 15:52:54.830640166 +0800
最近改动:2016-05-26 15:52:54.830640166 +0800
创建时间:-
  文件:'new.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835024     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612000 +0800
最近更改:2016-05-26 15:52:54.830640000 +0800
最近改动:2016-05-26 15:56:48.765143115 +0800
创建时间:-
0

*shutil.copy(src, dst, , follow_symlinks=True)

拷贝文件和状态信息,同样不copy改动时间

>>> os.system("stat old.txt new.txt")  
  文件:'old.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835014     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612241 +0800
最近更改:2016-05-26 15:52:54.830640166 +0800
最近改动:2016-05-26 15:52:54.830640166 +0800
创建时间:-
  文件:'new.txt'
  大小:0               块:0          IO 块:4096   普通空文件
设备:801h/2049d        Inode:1835023     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:57:53.448632439 +0800
最近更改:2016-05-26 15:57:53.448632439 +0800
最近改动:2016-05-26 15:57:53.448632439 +0800
创建时间:-
0
>>> shutil.copy2('old.txt', 'new.txt')
>>> os.system("stat old.txt new.txt")  
  文件:'old.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835014     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612241 +0800
最近更改:2016-05-26 15:52:54.830640166 +0800
最近改动:2016-05-26 15:52:54.830640166 +0800
创建时间:-
  文件:'new.txt'
  大小:4               块:8          IO 块:4096   普通文件
设备:801h/2049d        Inode:1835023     硬链接:1
权限:(0664/-rw-rw-r--)  Uid:( 1000/ ansheng)   Gid:( 1000/ ansheng)
最近访问:2016-05-26 15:53:09.813612000 +0800
最近更改:2016-05-26 15:52:54.830640000 +0800
最近改动:2016-05-26 15:58:07.938760974 +0800
创建时间:-
0

*shutil.ignore_patterns(patterns)

This factory function creates a function that can be used as a callable for copytree()‘s ignore argument, ignoring files and directories that match one of the glob-style patterns provided. See the example below.

shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)

递归的去拷贝文件夹

>>> os.system("tree folder1")
folder1
├── dir
├── file.txt
├── sc.pyc
├── tmp
└── vgauthsvclog.txt.0 -> /tmp/vgauthsvclog.txt.0

2 directories, 3 files
0
# folder2目录必须不存在,symlinks=True只copy链接文件,如果等于False就copy源文件,ignore等于不copy的文件或者目录
>>> shutil.copytree('folder1', 'folder2', symlinks=False, ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))   
>>> os.system("tree folder2")
folder2
├── dir
├── file.txt
└── vgauthsvclog.txt.0

1 directory, 2 files
0

shutil.rmtree(path, ignore_errors=False, οnerrοr=None)

递归的去删除文件

>>> os.system("ls -d folder2")
folder2
0
>>> shutil.rmtree('folder2')
>>> os.system("ls -d folder2")
ls: 无法访问'folder2': 没有那个文件或目录
512

shutil.move(src, dst, copy_function=copy2)

递归的去移动文件,它类似mv命令,其实就是重命名。

>>> os.system("ls -ld folder1")
drwxrwxr-x 4 ansheng ansheng 4096 5月  26 16:09 folder1
0
>>> shutil.move('folder1', 'folder3')
>>> os.system("ls -ld folder1")      
ls: 无法访问'folder1': 没有那个文件或目录
512
>>> os.system("ls -ld folder3")
drwxrwxr-x 4 ansheng ansheng 4096 5月  26 16:09 folder3
0

shutil.make_archive(base_name, format[, root_dir[, base_dir[, verbose[, dry_run[, owner[, group[, logger]]]]]]])

Create an archive file (such as zip or tar) and return its name.

>>> os.system("ls -dl folder3")
drwxrwxr-x 4 ansheng ansheng 4096 5月  26 16:21 folder3
0
# /home/ansheng/folder3是保存的文件,gztar是后缀名,/home/ansheng/folder3是要打包的路径
>>> shutil.make_archive("/home/ansheng/folder3", 'gztar', root_dir='/home/ansheng/folder3')
# 返回文件打包放在那儿了
'/home/ansheng/folder3.tar.gz'
>>> os.system("ls -dl /home/ansheng/folder3.tar.gz")
-rw-rw-r-- 1 ansheng ansheng 263 5月  26 16:22 /home/ansheng/folder3.tar.gz
0

如果你依然在编程的世界里迷茫,可以加入我们的Python学习扣qun:784758214,看看前辈们是如何学习的!交流经验!自己是一名高级python开发工程师,从基础的python脚本到web开发、爬虫、django、数据挖掘等,零基础到项目实战的资料都有整理。送给每一位python的小伙伴!分享一些学习的方法和需要注意的小细节,点击加入我们的 python学习者聚集地

可选参数如下:

参数说明
base_name压缩包的文件名,也可以是压缩包的路径。
format压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir要压缩的文件夹路径(默认当前目录)
owner用户,默认当前用户
group组,默认当前组

shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的,后面会介绍这两个模块的使用方法。

python shutil模块(其中详细介绍shutil.copytree ) python shutil模块(其中详细介绍shutil.copytree) 阅读详情

相关推荐

【HarmonyOS 5】鸿蒙APP使用【团结引擎Unity】开发的案例教程

以下是基于团结引擎开发鸿蒙Unity应用的详细案例教程,整合环境配置、工程适配、跨语言通信等核心环节。

2201_75709314的博客 2485

Python——shutil模块

        os模块不仅提供了新建文件、删除文件、查看文件属性的操作功能,还提供了对文件路径的操作功能。但是,对于移动、复制、打包、压缩、解压文件及文件夹等操作,os模块没有提供相关的函数,此时需要用到shutil模块。shutil模块是对os模块中文件操作的补充,是Python自带的关于文件、文件夹、压缩文件的高层次的操作工具,类似于高级API。 1.移动文件或文件夹        使用...

qq_40304090的博客 6799

factory机制-重载(一)

这里写自定义目录标题1.SystemVerilog对重载的支持2.对约束的重载3.factory 机制式的重载4.重载的方式和种类5.factory机制的调试 1.SystemVerilog对重载的支持 SystemVerilog是一种面向对象的语言。面向对象语言都有一大特征:重载。当在父类中定义一个函数/任务时,如果将其设置为virtual类型,那么就可以在子类中重载这个函数或任务。 重载的最大优势是使得一个子类的指针以父类的类型传递时,其表现的行为依然是子类的行为。 2.对约束的重载 在测试一个DUT时

sinat_41774721的博客 2961

Python3教程:shutil模块详细用法

shutil模块详细用法

Python热爱者的博客 1343

深入解析Zynq Ultrascale+ RF Data Converter中的PLL配置与时钟管理

本文深入解析了Zynq Ultrascale+ RF Data Converter中PLL配置与时钟管理的核心原理与实践。文章将RFDC时钟系统比作交响乐团,详细阐述了PLL作为指挥的关键作用,以及系统时钟、Tile时钟、参考时钟与采样时钟的层级关系。重点剖析了PLL配置参数(如VCO频率、分频器设置)的计算方法与稳定性考量,并提供了从IP配置使能顺序到多Tile同步、DRP访问等常见问题的实战避坑指南与调试技巧,帮助工程师构建稳定的射频信号处理基石。

7up55的博客 452

TMC2209的UART模式详解:如何用串口调试助手配置细分和电流(避坑指南)

本文深入解析TMC2209步进电机驱动器的UART模式,详细讲解如何通过串口调试助手配置细分和电流,包括硬件连接、通信协议、关键寄存器设置及高级功能应用。提供实战避坑指南,帮助开发者优化步进电机控制性能,适用于精密仪器、3D打印等场景。

weixin_29166013的博客 542

Python3中的 shutil模块

运行结果在文件列表里会有变化。直接上Python3的代码。

CHNMSCS 288

GPU运维面试题

【代码】GPU运维面试题。

u011220233的博客 700

Python3:shutil

shutil模块对文件和文件集合提供了许多高级操作,特别是提供了支持文件复制和删除的函数。 目录和文件操作 shutil.copyfileobj(fsrc, fdst[, length]):拷贝文件内容到另一个文件,可以指定拷贝的大小。 shutil.copyfile(src, dst):拷贝文件,不包含元数据。 shutil.copymode(src, dst):仅拷贝文件权限,对文件内容、用户...

xiaocai5731的博客 1014

正点原子ATK-LORA-01无线串口代码移植+STM32F103C8T6(标准库)

目录 一、ATK-LORA-01无线串口资料 二、代码移植 1.分析 (1)usart3(也可以是其他的串口)用于接收数据的串口 usart.h (2)time3(也可以是其他的定时器)用于时序的设置 (3)lora.c 三、演示 1.主机(发送方) (1)主机接线 (2)主机代码(发送方) (3)主机实物 插上无线串口通电即可发送​ 2.从机(接收方) (1)从机接线(LORA与主机相同) (2)从机代码(接收方) (3)从机实物 接上TTL和LORA并通电即...

m0_56942354的博客 8969

Dynamics 365 On-Premise Server v9.0部署体验

期盼已久的Dynamics 365 On-Premise的版本升级终于在11月初姗姗来迟。 11月2日起已经可以在官方渠道下载正式版的Dynamics 365 Server v9.0安装文件,版本号9.0.2,随手附上中文版安装文件下载地址。 想必已经有不少小伙伴开始尝试各种升级、安装了吧。 Dynamics 365 On-Premise的安装过程,度娘一下已经有很多了,这里就不赘述了,只是...

Roger的专栏 2140

Python3之shutil模块

饭店饭店VCR刚发的vcgrfvc

ff_smile 4801

倍福--TwinSAFE功能块的使用

在安全模块的程序设计中,输入变量取反,或者把PLC的变量连接到安全的功能块程序中, 操作流程 1.1. 功能块输出取反 例如修改IN,右击属性,然后可在Single-Channel选项中选择是NO还是NC的输入信号。 1.2. PLC标准变量作为安全程序的输入 1.2.1. 建立两个PLC变量 1.2.2. 安全程序区创建变量 1.2.3. 功能块变量链接 首先,PLC变量不能直接连到Estop功能块的输入变量中,否则会报错,但PLC可以连接到SafeAnd这些功能块,然后再转出来,如下所示

weixin_41883890的博客 5315

【Python】系列模块之标准库shutil详解

Python的shutil.copy2()函数会复制文件的权限,并尽可能地保留文件的元数据,包括所有权、时间戳等等。与shutil.copy()函数不同的是,shutil.copy2()函数会尽量保留源文件的所有元数据,而不是只复制一部分。将一个文件的内容拷贝到另一个文件中,目标文件无需存在。

康师傅没有眼泪 8255

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Python模块——shutil模块详解

shutil模块详解

数据分析与统计学之美 6万+

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Python 标准库模块shutil

shutil(Shell Utilities)是 Python 标准库中用于高级文件操作的模块,提供了比os模块更便捷的文件/目录复制、移动、删除、归档等功能。下面详细介绍其核心功能、参数说明及示例代码。

m0_46322965的博客 1227

Python学习系列 -初探标准库之Shutil库

Shutil 模块是 Python 中用于高效、灵活处理文件和目录的重要工具,提供复制、移动、重命名、删除等功能,并支持递归处理目录结构。通过深入学习和使用 shutil,可以提升代码效率和可维护性,帮助开发者在实际编程中取得更好的效果。

weixin_54217348的博客 1572

Python 的 shutil 模块

shutilshutil模块是 Python 编程中的一个强大工具,用于进行文件和目录操作。不仅可以进行基本的文件复制、移动、重命名和删除,还可以递归地处理目录结构。通过深入了解shutil模块的功能,可以更好地掌握如何使用它来处理文件和目录,从而提高代码的效率和可维护性。

涛哥聊Python 1456

Python之shutil模块

shutil是 Python 标准库中的高级文件操作模块,它作为os模块的补充,提供了复制、移动、删除、压缩、解压等操作。是一个非常重要的模块。

专注于Python编程技术的分享与交流,致力于帮助开发者提升编程技能,解决实际问题,探索Python的无限可能。 2922

Python 的 os 和 shutil 模块

os 模块提供了许多用于处理操作系统功能的函数,包括文件和目录操作、环境变量访问等。而 shutil 模块则构建在 os 模块的基础上,提供了更高级的文件操作功能,如复制、移动、删除文件以及归档和压缩等。本文将深入探讨这两个模块的使用方法,并通过示例代码和实用技巧,帮助大家更好地利用 Python 来管理文件系统。

若不知道要驶向哪个码头,那么任何风都不会是顺风。 1598

Python常用模块14-python的shutil模块

文章目录一.shutil模块介绍1.1 目录和文件操作1.2 归档操作二.shutil模块实例2.1 shutil.copyfileobj2.2 shutil.copyfile2.3 shutil.copymode2.4 shutil.copystat2.5 shutil.copy2.6 shutil.copy22.7 shutil.copytree2.8 shutil.rmtree2.9 shutil.move2.10 shutil.make_archive()2.11 shutil.disk_usage

只是甲的博客 5605

Python 之 shutil 模块的基本使用(47)

shutil模块主要用于提供一些高级的文件和目录操作功能,它可以看作是os模块在文件和目录操作方面的补充和扩展。通过使用shutil模块,开发者可以轻松地完成文件的复制、移动、删除,目录的递归复制和删除,以及文件权限的设置等操作,大大提高了文件和目录管理的效率。Python 的shutil模块为我们提供了丰富的文件和目录操作功能,包括文件的复制、移动、删除,目录的递归复制和删除,文件权限的设置,以及文件的归档和解压缩等。

Android开发领域创作者 1568

Python 标准库之 shutil 高阶文件操作『详细』

Python标准库之 shutil 高阶文件操作『详细』 文章目录Python标准库之 shutil 高阶文件操作『详细』一、Python shutil介绍 二、导入 shutil 库三、目录和文件操作 一、Python shutil介绍 shutil 模块提供了一系列对文件和文件集合的高阶操作,特别是提供了一些支持文件拷贝和删除的函数。 主要功能有 二、导入 shutil 库 在看下列内容并实际操作前,别忘记导入shutil 标准库呀 import shutil 三、目录和文件操作

贤哲XianZhe的博客 3711

python中shutil模块用法介绍

参考文章地址: https://segmentfault.com/a/1190000016689023 文章翻译了python标准库中shutil的介绍: https://docs.python.org/zh-cn/3.7/library/shutil.html shutil模块提供了一些针对文件和目录的高级操作,主要是拷贝、移动。对于单个文件的操作,还可参考os模块 Warning: 即使是高级...

u014157109的博客 6698

python shutil.rmtree_Python标准库shutil用法实例详解

本文实例讲述了Python标准库shutil用法。分享给大家供大家参考,具体如下:shutil模块提供了许多关于文件和文件集合的高级操作,特别提供了支持文件复制和删除的功能。文件夹与文件操作copyfileobj(fsrc, fdst, length=16*1024): 将fsrc文件内容复制至fdst文件,length为fsrc每次读取的长度,用做缓冲区大小fsrc: 源文件fdst: 复制至f...

weixin_39963080的博客 2205

Python 标准库之 shutil

1. shutil 简介 shutil是Shell Utilities的简写,它提供了大量的文件和目录的高级操作。特别针对文件、目录的拷贝和删除,主要功能为目录和文件操作以及压缩操作。 2. 常用的函数如下 函数 说明 shutil.copyfile( src, dst) 从源src复制到dst中去。如果当前的dst已存在的话就会被覆盖掉,src 和 dst 都只能是文件 sh...

wohu1104的专栏 820
上一篇: Python全栈之路标准库系列之configparser模块
下一篇: Python全栈之路标准库系列之zipfile模块
Python老王
博客等级 码龄7年 159粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值