python中shutil模块的用法-高级文件操作模块

目录

前言

一、shutil是什么?

二、使用步骤

1. 安装shutil库

2. shutil库的使用

3. 复制函数

3.1 shutil.copy(src,dst) ==> 拷贝文件和权限

​编辑

3.2 shut.copy2(src,dst) ==> 拷贝文件和状态信息

3.3 shutil.copyfile(src,dst,follow_symlinks) ==> 拷贝文件

3.4 shutli.copytree(src,det,symlinks=False,ignore=None) ==> 递归的去拷贝文件

3.5 shutil.copymode(src, dst) ==> 仅拷贝权限,内容、组、用户均不变

4. 递归移动文件

4.1 shutil.move(src, dst) ==> 递归的去移动文件

5. 递归删除文件

5.1 shutil.rmtree(path[, ignore_errors[, onerror]]) ==> 递归的去删除文件

6. 文件、文件夹打包

6.1 shutil.make_archive(base_name, format, root_dir=' ', base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)  ==> 打包、压缩

总结


前言

python的高级文件操作技巧shutil


一、shutil是什么?

shutil 是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还提供了对文件以及目录的路径操作。shutil模块提供了移动、复制、 压缩、解压等操作,恰好与os互补,共同一起使用,基本能完成所有文件的操作。是一个非常重要的模块。但是在Windows和 POSIX平台上,文件所有者,ACL以及ADS(供选数据流)不会被复制.

二、使用步骤

1. 安装shutil库

pip insatll shutilwhich

2. shutil库的使用

import shutil

3. 复制函数

3.1 shutil.copy(src,dst) ==> 拷贝文件和权限

import shutil
shutil.copy('demo.py','demo2,py') #目标文件无需存在

# copy()复制文件数据和文件许可模式,不保留其他元数据,例如文件的创建时间和修改时间,要保留原始文件中的所有文件元数据,应用copy2()。
# copy()不能用于复制目录。

3.2 shutil.copy2(src,dst) ==> 拷贝文件和状态信息

import shutil
shutil.copy2('demo.py','demo2,py') #dst文件无需存在
#拷贝文件和状态信息
# copy2()尝试将所有元数据从源文件的符号链接复制到新创建的目标文件的符号链接。但是此功能并非在所有平台上都可以用。在某些或所有此功能不可用的平台上,copy2()将保留所有可能的元数据;copy2()永远不会引发异常,因为它无法保留文件元数据。
# copy2()不能用于复制目录

3.3 shutil.copyfile(src,dst,follow_symlinks) ==> 拷贝文件

import shutil
shutil.copyfile('demo.py','demo2.py')
# 将一个文件的内容拷贝到另一个文件中,目标文件无需存在
# src:源文件路径
# dst:复制至dst文件,若dst文件不存在,将会生成一个dst文件;若存在将会被覆盖
# follow_symlinks:设置为True时,若src为软连接,则当成文件复制;如果设置为False,复制软连接。默认为True。

3.4 shutli.copytree(src,det,symlinks=False,ignore=None) ==> 递归的去拷贝文件

import shutil
# shutil.copytree(src, dst, symlinks=False, ignore=None),递归的去拷贝文件夹
shutil.copytree('创建文件夹', '文件', ignore=shutil.ignore_patterns('*.pyc', 'tmp*'))
# oripath : "来源路径"
# despath : "目标路径"
# ignore : shutil.ignore_patterns() 是对内容进行忽略筛选,将对应的内容进行忽略。
# 复制文件的权限和时间,如果当前目录存在会引发异常

3.5 shutil.copymode(src, dst) ==> 仅拷贝权限,内容、组、用户均不变

import shutil
shutil.copymode('demo.py','demo2.py')
# 拷贝权限,前提是目标文件存在,不然会报错。将src文件 权限 复制至dst文件。文件内容,所有者和组不受影响

4. 递归移动文件

4.1 shutil.move(src, dst) ==> 递归的去移动文件

import shutil
shutil.move('demo.py','../练习题')
# 将文件或目录(src)递归移动到另一个位置(dst)并返回目标。
# 如果目标是现有目录,则将src移动到该目录内。如果目标已经存在但不是目录,则可能会根据os.rename()语义将其覆盖。
# 递归的去移动文件,它类似mv命令,其实就是重命名

5. 递归删除文件

5.1 shutil.rmtree(path[, ignore_errors[, onerror]]) ==> 递归的去删除文件

import shutil
shutil.rmtree('demo2.py')#删除目录,不能删除文件否则报错
# 删除整个目录树;路径必须指向目录(但不能指向目录的符号链接)。如果ignore_errors为true,则删除失败导致的错误将被忽略;如果为false或忽略,则通过调用onerror指定的处理程序来处理此类错误;如果省略,则引发异常

6. 文件、文件夹打包

6.1 shutil.make_archive(base_name, format, root_dir=' ', base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)  ==> 打包、压缩

import shutil
shutil.make_archive('./file3/file2/kkk','zip','file1' )
#可指定打包后的文件名
'''
shutil.make_archive(base_name, format, root_dir=' ', base_dir=None, verbose=0,dry_run=0, owner=None, group=None, logger=None)
整个语句的返回值为压缩或打包后的文件的路径+文件名称(文件名称带有相应格式的后缀)
base_name:压缩、打包后的文件名称,也可以是压缩包的路径,如果要保存至指定路径则需要指定路径,此处的文件名称不需加格式后缀,打包或压缩完成后会自动加上
format:压缩或打包的格式,有tar、zip、bztar、gztar
root_dir:打包时切换到的根路径。默认值为当前路径
base_dir:开始打包的路径。也就是说对base_dir所指定的路径进行打包,默认值为 root_dir
owner:用户,默认当前用户
group:组,默认当前组
logger:用于记录日志,通常是logging.Logger对象,可省略
'''

总结

以上就是今天的高级文件操作模块-shutil库的基本使用方法,后期会持续更新该模块更多的使用方法和技巧

  • 30
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

才短思涩-求解

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值