这是我参与8月更文挑战的第3天,活动详情查看:8月更文挑战python
咱们在前面已经学习了对文件操做的os模块,对文件路径操做的os.path模块。shell
本期,咱们继续学习关于文件的Python模块—shutil。安全
(#^.^#),学习shutil模块能够对文件及文件夹压解缩、移动、拷贝等高级的操做markdown
shutil模块顾明思议sh + util,shell工具的意思,shutil模块有以下特色app
💻注意ide
shutil模块提供的拷贝文件也是不能拷贝文件的元数据。 (元数据:文件的大小与修改日期等信息。)工具
shutil模块提供了os模块对文件没有的拷贝、移动。经常使用的方法以下:post
方法 | 做用 |
---|---|
shutil.copyfileobj(fsrc,fdst[length=16*1024]) | 将文件内容拷贝到另外一个文件中,能够指定大小的内容 |
shutil.copyfile(src,dst) | 拷贝文件 |
shutil.copymode(src,dst) | 仅拷贝权限。内容、组、用户均不变 |
shutil.copystat(src,dst) | 仅拷贝状态的信息, |
包括:mode bits, atime, mtime, flags | |
shutil.copy(src,dst) | 拷贝文件和权限 |
shutil.copy2(src,dst) | 拷贝文件和状态信息 |
shutil.ignore_patterns(*patterns) | 递归的复制文件内容及状态信息,ignore的意思是排除 |
shutil.copytree(src,dst,symlinks=False,ignore=None,ignore=None) | 拷贝软链接 |
shutil.rmtree(path[,ignore_errors[,onerror]]) | 递归删除文件 |
shutil.move(src,dst) | 递归的去移动文件,它相似mv命令,其实就是重命名。 |
🌟shutil.copyfile(src,dst)学习
拷贝文件📃;能够指定文件的大小。ui
注意:是src和dst必须是文件,不能够是目录 不然会报IOError: [Errno 13] Permission denied:
咱们来实现一下,从A文件夹下的文件批量复制到B文件夹下
import shutil
import os
def copyfile():
filefolds = os.listdir('./old')
print("old文件夹里文件:",filefolds)
i = 0
for file in filefolds:
i = i+1
new_name = "New/"+"New"+str(i)+"_test"+'.txt'
print(new_name)
filename = "old/"+file+"/test.txt"
shutil.copyfile(filename, new_name)
copyfile()
复制代码
🌟 shutil.copytree(src,dst,symlinks=False,ignore=None,ignore=None)
递归复制目录及子目录的文件和状态信息 注意:
WindowsError: [Error 183]
import os
import shutil
# 切换到F:\JueJin目录下
os.chdir(r"F:\JueJin")
shutil.copytree("./old/old0_test","./New3")
print("dst目录下的文件:",os.listdir("./New3"))
复制代码
shutil模块也提供了对文件📃和文件夹📁打包、压缩、解压缩操做,常见方法以下:
方法 | 做用 |
---|---|
shutil.make_archive(base_name,format[,root_dir[,base_dir[]]]) | 建立一个归档文件(例如 zip 或 tar)并返回其名称 |
shutil.get_archive_formats() | 返回支持的归档格式列表 |
shutil.register_archive_format(name,funvtion[,extra_args[,description]]) | 为name格式注册一个归档程序 |
ps: shutil模块支持压缩、解压操做底层是依赖zipfile模块和tarfile模块
🌟shutil.make_archive(base_name,format[,root_dir[,base_dir[...]]])
base_name:压缩打包后的文件名或者路径名 format:压缩或者打包格式“zip”,"tar","bztar"or"gztar" root_dir: 将哪一个目录或者文件打包(也就是源文件)
makearchivefile("./old","./old/old0_test")
复制代码
本期,咱们学习shutil模块对os模块对文件操做进行补充,重点有两点:
咱们在须要是要对文件进行拷贝移动及压缩解压缩等操做,能够借助Python里面的shutil模块来为咱们服务,提升咱们解决问题的速度~
以上是本期内容,欢迎大佬们点赞评论指正,下次见~ღ( ´・ᴗ・` )比心