8.8 shutil--高级的文件操作
本模块主要提供了一些对文件和多个文件的高级操作,比如文件的拷贝功能、文件的删除功能。如果只是想对一个文件进行操作,使用os模块操作就可以了。不过要值得注意的一点是本模块里拷贝文件和删除文件,在有一些情况下系统的元数据没有办法拷贝和删除。
8.8.1 目录和文件操作
shutil.copyfileobj(fsrc, fdst[, length])
拷贝文件类似的对象fsrc的内容到目标对象fdst。参数length是指明缓冲区的大小,如果是负数表示整个文件读取;默认值是读取一块磁盘大小的数据,不会占用太多内存。如果对文件对象操作完成之后,再想从头读取文件对象,需要调整文件对象的位置指针。
例子:
#python 3.4
import shutil
src = 'F:\\temp\\py\\codecs1.py'
dst = 'F:\\temp\\py\\test888.py'
with open(src, 'rb') as fsrc:
with open(dst, 'wb') as fdst:
shutil.copyfileobj(fsrc, fdst, 100)
shutil.copyfile(src, dst, *, follow_symlinks=True)
拷贝文件名称为src的内容到文件dst,返回dst文件路径。
例子:
#python 3.4
import shutil
src = 'F:\\temp\\py\\codecs1.py'
dst = 'F:\\temp\\py\\test888.py'
print(shutil.copyfile(src, dst))
结果输出如下:
F:\temp\py\test888.py
exception shutil.SameFileError
当调用函数copyfile()时,如果源文件与目标文件一样时,就会抛出这个异常。
shutil.copymode(src, dst, *, follow_symlinks=True)
拷贝文件的权限位,不影响文件的内容、拥有关系和组关系。
shutil.copystat(src, dst, *, follow_symlinks=True)
拷贝文件的权限位、最后访问时间、最后修改时间和标志,不影响文件的内容、拥有关系和组关系。
shutil.copy(src, dst, *, follow_symlinks=True)
拷贝文件src到文件或者目录dst。如果dst是目录,拷贝文件到目录里面。参数follow_symlinks为false,表示如果源文件是一个符号连接,目标也拷贝一个符号连接;如果为true,即使源文件是一个符号连接,也会拷贝源文件。
例子:
#python 3.4
import shutil
src = 'F:\\temp\\py\\codecs1.py'
dst = 'F:\\temp\\py\\dir1'
print(shutil.copy(src, dst))
结果输出如下:
F:\temp\py\dir1\codecs1.py
shutil.copy2(src, dst, *, follow_symlinks=True)
与copy函数一样的功能,只不过它会尽量拷贝所有文件相关的元数据。
shutil.ignore_patterns(*patterns)
用来创建一个忽略参数ignore,以便copytree()函数遍历文件时可以忽略的参数、文件和目录。
shutil.copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2, ignore_dangling_symlinks=False)
递归地完全地拷贝一个目录到另外一个目录。
例子:
#python 3.4
import shutil
src = 'F:\\temp\\py\\dir1'
dst = 'F:\\temp\\py\\dir2\\1'
print(shutil.copytree(src, dst))
结果输出如下:
F:\temp\py\dir2\1
shutil.rmtree(path, ignore_errors=False, οnerrοr=None)
删除整个目录树,路径必须是一个目录而不能是一个符号连接。参数ignore_errors设置为True时,会忽略发生的错误;如果设置为False时,当错误发生就会调用onerrro错误处理函数。
shutil.move(src, dst)
递归地移动一个文件或目录到另外目录位置。
例子:
#python 3.4
import shutil
src = 'F:\\temp\\py\\dir2\\1'
dst = 'F:\\temp\\py\\dir1\\2'
print(shutil.move(src, dst))
结果输出如下:
F:\temp\py\dir1\2
shutil.disk_usage(path)
返回磁盘的使用统计情况,以命名元组形式:(总数,已经使用,可用),单位为字节。
例子:
#python 3.4
import shutil
print(shutil.disk_usage('F:\\'))
结果输出如下:
usage(total=107373154304, used=93544562688, free=13828591616)
shutil.chown(path, user=None, group=None)
使用一个路径的拥有者和组关系。
shutil.which(cmd, mode=os.F_OK | os.X_OK, path=None)
返回路径cmd里可执行文件的路径。
例子:
#python 3.4
import shutil
print(shutil.which('Python'))
结果输出如下:
C:\Python34\Python.EXE
蔡军生 QQ:9073204 深圳
相关文章
- QFile写文件 中文乱码解决方法
- Python(文件操作)
- 如何实现实时文件同步:inotify + rsyncd
- 漫画大数据:为啥我把 HDFS 文件权限都改成 777 了还是删不掉?
- EasyExcel实现对excel文件读写
- Postgresql psql文件执行与批处理多个sql文件操作
- 文件Linux下修改文本文件的操作技巧(linux修改文本)
- Linux下复制文件的简单命令操作(linux命令复制文件)
- 快速执行Oracle SQL文件的姿势(oracle执行sql文件)
- 权限Linux下一步操作:批量修改文件权限(linux批量修改文件)
- Linux mv 命令快速移动文件(linuxmvrf)
- JAVA操作properties文件详解编程语言
- Linux实现文件偏移量操作(linux偏移量)
- Linux打开DB文件:一步步完成数据库操作(linux打开db文件)
- Linux 中探索缓存文件的奥秘(linux查看缓存文件)
- Linux下利用输出功能保存文件(输出到文件linux)
- 文件Linux解压GZ文件的简单方法(linux如何解压gz)
- Linux:探索大日志文件的世界(linux大日志文件)
- 文件操作在Linux系统中(filelinux)
- Linux下修改默认文件/文件夹权限.(linux修改默认权限)
- Linux中list,快速操作文件和目录列表(linux中list)
- 压缩无忧,一键完成——Linux文件压缩命令详解(linux文件压缩命令)
- 文件Linux 去除重复文件的方法(linux去重复)
- 掌握Linux下重定向方法,实现高效文件操作(linux下重定向)
- Linux 下批量拷贝文件的简单操作(linux 批量拷贝)
- 数据库导入MySQL数据库Bak文件与MySQL的操作(bak怎么导入mysql)
- 比较次次读取Redis和文件的差异(次次读取redis和文件)
- MySQL实现文件上传的操作语句(mysql上传文件语句)
- MySQL无法储存文件,解决方法如何(mysql不能储存文件)
- joomlajceeditor解决上传中文名文件失败问题
- c#保存窗口位置大小操作类(序列化和文件读写功能)