python专题shutil高阶文件操作

栏目: IT技术 · 发布时间: 4年前

内容简介:如果读者读过知识追寻者其它文件相关专题操作,再来学习这篇高阶文件操作会让你的文件知识瞬间高涨一台阶;本篇文章有些函数作用给知识追寻中感觉是用来伪造信息的,相信如果做网络渗透的读者应该很喜欢这些操作;这本文件读者不仅可以学到文件的移动,复制,删除,还能对文件的元数据进行操作;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

  1. 在source文件夹下创建zszxz.txt,指定源文件路径为sour_path
  2. 指定目的文件名路径tar_path
  3. 执行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

  1. 将sour_path文件拷贝至tar_path
  2. 打印返回路径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

  1. 源文件与,目标文件当已存在
  2. 仅拷贝源文件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

  1. 拷贝sour_path文件的权限,上次进入文件时间,上次修改文件时间,标志位至目标文件tar_path
  2. 不影响文件的内容,属主,数组;
# -*- 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

  1. 删除目标target(否则异常,详细说明见章节2)
  2. 将sour_path目录下文件拷贝tar_path目录下;
  3. 忽略拷贝.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

  1. 删除整个source目录下所有文件
  2. 移除文件发生异常会由shutil.Error进行处理(读者应自定义异常进行处理,知识追寻者这边不作详细处理)
# -*- coding: utf-8 -*-
import shutil

sour_path = r'C:\test\source'
shutil.rmtree(sour_path, onerror=shutil.Error)

3.9 move

  1. 将source整个目录包括文件移动到target目录下
  2. 返回目标目录
# -*- 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高阶文件操作》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Machine Learning

Machine Learning

Kevin Murphy / The MIT Press / 2012-9-18 / USD 90.00

Today's Web-enabled deluge of electronic data calls for automated methods of data analysis. Machine learning provides these, developing methods that can automatically detect patterns in data and then ......一起来看看 《Machine Learning》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具