内容简介:如果读者读过知识追寻者其它文件相关专题操作,再来学习这篇高阶文件操作会让你的文件知识瞬间高涨一台阶;本篇文章有些函数作用给知识追寻中感觉是用来伪造信息的,相信如果做网络渗透的读者应该很喜欢这些操作;这本文件读者不仅可以学到文件的移动,复制,删除,还能对文件的元数据进行操作;shutil模块还支持归档操作,这不是本文的重点,详细可以参见官网,如果有空,知识追寻者以后会做这方面的研究学习;随手点赞谢谢;输出:拷贝sour_path文件至tar_path文件,不包括源文件所有元数据信息
一 前言
如果读者读过知识追寻者其它文件相关专题操作,再来学习这篇高阶文件操作会让你的文件知识瞬间高涨一台阶;本篇文章有些函数作用给知识追寻中感觉是用来伪造信息的,相信如果做网络渗透的读者应该很喜欢这些操作;这本文件读者不仅可以学到文件的移动,复制,删除,还能对文件的元数据进行操作;shutil模块还支持归档操作,这不是本文的重点,详细可以参见官网,如果有空,知识追寻者以后会做这方面的研究学习;随手点赞谢谢;
二 shutil 常用函数介绍
函数名称 | 函数介绍 |
---|---|
shutil.copyfileobj(fsrc, fdst[, length]) | 从源文件拷贝数据到目标文件;如果给定长度length,只会拷贝对应长度字节的数据;如果文件起始位置不为0,只会拷贝文件起始位置position至end部分内容。如果length为负数不会对数据进行分块循环引用处理(慎用)。 |
shutil.copyfile(src,dst*, follow_symlinks=True) | 将源文件拷贝至目标文件(不包括元数据),返回目标文件路径;如果源文件是符号链接文件,follow_symlinks未设置,则会创建新的符号链接文件; |
shutil.copymode(src,dst, *, follow_symlinks=True) | 复制源文件的权限到目标文件;不会影响文件的属主,属组,和文件内容;如果源文件和目标文件都是符号链接文件,follow_symlinks设置为False,会对目标文件的模式进行尝试修改;并非每个平台都可以使用此函数; |
shutil.copystat(src, dst, *, follow_symlinks=True) | 复制文件的权限,上次进入文件时间,上次修改文件时间,标志位到目标文件;不会影响文件的属主,属组,和文件内容 |
shutil.copy(src, dst, *, follow_symlinks=True) | 复制源文件到目标文件;如果目标文件是个目录,已源文件的基本名为基准进行复制;不包括拷贝所有元数据信息; |
shutil.copy2(src, dst, *, follow_symlinks=True) |
与copy功能类似,会 尝试
拷贝所有元数据信息 |
shutil.ignore_patterns(* patterns ) | 模式匹配,用于 copytree 函数 ignore 属性进行回调处理; |
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False, dirs_exist_ok=False) | 将源目录下所有文件拷贝至目标目录,并返回目标目录;ignore可以进行模式匹配; copy_function 可以指定复制的函数;dirs_exist_ok如果开启,目标目录或者丢失的父目标如果存在就会发生异常; |
shutil.rmtree(path, ignore_errors=False, οnerrοr=None) | 删除整个目录; ignore_errors 设置为true,移除文件发生异常时会被忽略;如果设置为false,或者省略,异常交给onerror 处理; |
shutil.move( src , dst , copy_function=copy2 ) | 递归移动源文件或者目录至目标目录; |
shutil.disk_usage(path) | 返回给定路径的磁盘统计;以元组新式返回total,free,used; |
shutil.chown( path , user=None , group=None ) |
改变文件属主,属组;unix平台,可以参照 os.chown
函数不做详细介绍 |
三 shutil 函数使用示例
3.1copyfileobj
- 在source文件夹下创建zszxz.txt,指定源文件路径为sour_path
- 指定目的文件名路径tar_path
- 执行copyfileobj方法,将源文件对象复制到目的文件对象
# -*- coding: utf-8 -*- import shutil """ 复制文件 """ sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' result = shutil.copyfileobj(open(sour_path,'r',encoding='utf=8') , open(tar_path,'w',encoding='utf=8') )
3.2copyfile
- 将sour_path文件拷贝至tar_path
- 打印返回路径result
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' result = shutil.copyfile(sour_path, tar_path) print(result)
输出:
C:\test\target\new_zszxz.txt
3.3copymode
- 源文件与,目标文件当已存在
- 仅拷贝源文件sour_path的权限至目标文件tar_path
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' shutil.copymode(sour_path, tar_path)
3.4 copystat
- 拷贝sour_path文件的权限,上次进入文件时间,上次修改文件时间,标志位至目标文件tar_path
- 不影响文件的内容,属主,数组;
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' shutil.copystat(sour_path, tar_path)
3.5 copy
拷贝sour_path文件至tar_path文件,不包括源文件所有元数据信息
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' shutil.copy(sour_path, tar_path)
3.6 copy2
拷贝sour_path文件至tar_path文件,尝试拷贝源文件所有元数据信息
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source\zszxz.txt' tar_path = r'C:\test\target\new_zszxz.txt' shutil.copy2(sour_path, tar_path)
3.7copytree
- 删除目标target(否则异常,详细说明见章节2)
- 将sour_path目录下文件拷贝tar_path目录下;
- 忽略拷贝.pyc结尾文件,tmp开头的目录
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source' tar_path = r'C:\test\target' result = shutil.copytree(sour_path, tar_path, ignore=shutil.ignore_patterns('*.pyc', 'tmp*')) print(result)
输出
C:\test\target
3.8 rmtree
- 删除整个source目录下所有文件
- 移除文件发生异常会由shutil.Error进行处理(读者应自定义异常进行处理,知识追寻者这边不作详细处理)
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source' shutil.rmtree(sour_path, onerror=shutil.Error)
3.9 move
- 将source整个目录包括文件移动到target目录下
- 返回目标目录
# -*- coding: utf-8 -*- import shutil sour_path = r'C:\test\source' tar_path = r'C:\test\target' result = shutil.move(sour_path, tar_path, copy_function=shutil.copy2) print(result)
输出
C:\test\target\source
3.10 disk_usage
# -*- coding: utf-8 -*- import shutil path = r'C:\test\target\source' result = shutil.disk_usage(path) print(result)
输出:
usage(total=510979805184, used=230944526336, free=280035278848)
以上所述就是小编给大家介绍的《python专题shutil高阶文件操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
《电脑报》2005年合订本(上下)
电脑报社主编 / 西南师范大学出版社 / 2006-1 / 45.00元
全套上、下两册,浓缩2005年电脑报精华文章;附录包含70余篇简明IT应用指南,涵盖软件、硬件、数码、网络四大领域,配赠权威实用的2005-2006中国计算机年鉴光盘,近1.4GB海量信息与资源超值奉献,提供2005-2006全系列硬件、数码产品资讯,兼具知识性与资料性,连结购买每年《电脑报合订本》,你将拥有一套完整的实用大型电脑文库。一起来看看 《《电脑报》2005年合订本(上下)》 这本书的介绍吧!
UNIX 时间戳转换
UNIX 时间戳转换
HSV CMYK 转换工具
HSV CMYK互换工具