python入门《基础知识7--目录和文件高级操处理,shutil模块》

本文介绍shutil模块。

  • shutil模块:文件和目录的复制、移动、删除、压缩、解压等高级处理
  • shutil模块的主要作用是复制文件

一、复制文件

1.1介绍“文件”的一些信息

文件的信息大致可分为:文件的内容和文件的状态。

而文件的状态包括:权限,组,用户和时间等。

详情参见:https://blog.csdn.net/gui951753/article/details/79078682

1.2一些常见函数

1.2.1文件内容的复制(覆盖形式

PS:所有的复制功能函数如shutil.copy(),shutil.copy2()等都无法复制文件的所有元数据。

(1)shutil.copyfileobj(f1,f2):将f2的内容以覆盖的形式写入f1中

import shutil
f1 = open('file1.txt',encoding = 'utf-8')
f2 = open('file2.txt',encoding = 'utf-8')
shutil.copyfileobj(f1,f2)
  • 参数f1,f2是在调用方法前就打开的文件对象
  • f2必须是可以”写入“的

(2)shutil.copyfile(f1,f2):将f2的内容以覆盖的形式写入f1中

shutil.copyfile(f1,f2)
  • 与上面一种方法不同的是,在调用方法前无须打开文件。直接用文件名进行覆盖。
  • 从源码可知,实现原理是调用了shutil.copyfileobj()函数
  • 返回一个file类型参数——file2

1.2.2文件权限的复制

shutil.copymode(f1,f2):仅复制文件的权限,不更改文件的内容,组,和用户,无返回对象

ps:mode的意思是"模式,样式“——游客模式和管理员模式,也即管理员权限。

1.2.3文件状态的复制

shutil.copystat(f1,f2):复制文件的所有状态信息,包括权限,组,用户,时间.无返回对象

PS:stat是指state:状态,状况,情况

1.2.4复制文件的内容和权限

(1)仅复制文件内容和权限

shutil.copy(f1,f2):复制文件的内容和权限,相当于先执行copyfile()后再执行copymode()。返回file类对象f2。

(2)复制文件内容和文件的所有状态信息

shutil.copy2(f1,f2):复制文件的内容和文件的所有状态信息,相当于先执行copyfile()再执行copystat(),返回file类对象f2。

1.2.5递归地复制文件内容以及状态信息

shutil.copytree()

参考https://blog.csdn.net/nkguohao/article/details/44412975

二.移动文件

shutil.move(src,dst,copy_function=copy2)函数可以递归地移动文件或重命名

三.读取压缩及归档压缩文件

shutil.make_archive(base_name,format,....)用于创建归档文件

base_name是需要创建的文件名称,包括路径,要减去任何特定格式的扩展名。

四.解压文件

shutil.unpack_aechive(filename[,extract_dir[,format]])拆分归档。

filename为归档的完整路径;extract_dir为解压归档的目标目录名称,默认当前目录;格式是文件存档格式、zip、tar或者其他。

注:shutil还有一些不常用功能,如获取终端窗口大小,引发同一文件异常等。

发布了34 篇原创文章 · 获赞 1 · 访问量 2617

猜你喜欢

转载自blog.csdn.net/qq_39685968/article/details/97138118
今日推荐