当前位置: 首页 > 科技观察

Python之shutil模块11个常用函数详解

时间:2023-03-14 23:53:57 科技观察

shutil是Python中的高级文件操作模块,与os模块形成互补关系。os主要提供了文件或文件夹的创建、删除、查看等方法,同时也提供了对文件和目录的Path操作。shutil模块提供了移动、复制、压缩、解压等操作。它只是对os的补充,配合使用基本可以完成所有的文件操作。是一个非常重要的模块。#加载包importshutil#查看包中所有方法print(dir(shutil))['chown','collections','copy','copy2','copyfile','copyfileobj','copymode','copystat','copytree','disk_usage','errno','fnmatch','get_archive_formats','get_terminal_size','get_unpack_formats','getgrnam','getpwnam','ignore_patterns','make_archive','move','nt','os','register_archive_format','register_unpack_format','rmtree','stat','sys','unpack_archive','unregister_archive_format','unregister_unpack_format','which']1。copy()描述:复制文件语法:shutil.copy(fsrc,path),返回值:返回复制的路径fsrc:源文件路径:目标地址shutil.copy('test.csv','C:/Users/zhengxiang.wzx/Desktop/')'C:/Users/zhengxiang.wzx/Desktop/test.csv'2.copy2()描述:复制文件和状态信息语法:shutil.copy(fsrc,path),返回值:returnfsrc复制后的路径:源文件路径:目标地址压缩文件'3。copyfileobj()描述:将一个文件的内容复制到另一个文件。如果目标文件本身有内容,源文件的内容会覆盖目标文件的内容。如果该文件不存在,它将自动创建一个。语法:shutil.copyfileobj(fsrc,fdst[,length=16*1024])fsrc:源文件fdst:复制到fdst文件length:缓冲区大小,即fsrcimportshutilf1=open('file.txt','r')f2=open('file_copy.txt','w+')shutil.copyfileobj(f1,f2,length=16*1024)4.c??opyfile()说明:将一个文件的内容复制到另一个文件中文件中,目标文件不需要存在语法:shutil.copyfile(src,dst,follow_symlinks)src:源文件路径dst:复制到dst文件,如果dst文件不存在,会生成一个dst文件生成;follow_symlinks:当设置为True时,如果src是符号链接,则将其作为文件复制;如果设置为False,将复制符号链接。默认值为真。#file_1不存在,一个shutil.copyfile('file_0.csv','file_1.csv')'file_1.csv'#file_2存在,直接copyshutil.copyfile('file_0.csv','file_2.csv')'file_2.csv'5.copytree()说明:复制整个目录文件,不需要的文件类型不能复制语法:shutil.copytree(oripath,despath,ignore=shutil.ignore_patterns("*.xls","*.doc"))parameters:oripath:"sourcepath"despath:"targetpath"ignore:shutil.ignore_patterns()是对内容进行忽略过滤,忽略对应的内容。importshutil,ospath1=os.path.join(os.getcwd(),"kaggle")path1'C:\\Users\\wuzhengxiang\\Desktop\\Python知识点总结\\kaggle'#bbb和ccc文件夹都是不能存在,会自动创建path2=os.path.join(os.getcwd(),"bbb","ccc")path2'C:\\Users\\wuzhenxiang\\Desktop\\Python知识点总结\\bbb\\ccc'#忽略"abc.txt","bcd.txt"不复制shutil.copytree(path1,path2,ignore=shutil.ignore_patterns("abc.txt","bcd.txt"))6.copymode()说明:复制权限,前提是目标文件存在,否则会报错。将src文件权限复制到dst文件。文件内容、所有者和组不受影响语法:shutil.copymode(src,dst)src:源文件路径dst:复制权限到dst文件,dst路径必须是真实路径,文件必须存在,否则会Filenotfounderrorfollow_symlinks:当设置为False时,src,dst都是软链接,软链接权限可以复制。如果设置为True,则视为普通文件复制权限。默认值为真。Python3新参数shutil.copymode("file_0.csv","file_1.csv")7.move()说明:移动文件或文件夹语法:shutil.move(src,dst)os.chdir('C:/Users/wuzhenxiang/Desktop/Python知识点汇总')os.getcwd()shutil.move('file_1.csv','C:/Users/wuzhenxiang/Desktop/股票数据分析')'C:/Users/wuzhengxiang/Desktop/股票数据分析\\file_1.csv'8。disk_usage()说明:查看磁盘使用信息,计算磁盘总存储量、已用存储量、剩余存储量信息。语法:shutil.disk_usage('盘符')返回值:元组shutil.disk_usage('D:')usage(total=151199412224,used=41293144064,free=109906268160)total,totalstorage:151199412224/1024/1024/1024=140GBUsed,已用:41293144064/1024/1024/1024=38GBfree,剩余容量:109906268160/1024/1024/1024=102GB9.make_archive()描述:压缩包语法:make_archive(base_name,format,root_dir=None,base_=None,verbose=0,dry_run=0,owner=None,group=None,logger=None)压缩包:base_name:Thefile压缩包名称,或压缩包路径。如果只是文件名,则保存到当前目录,否则保存到指定路径)#在当前目录下打包压缩file_1.csvshutil.make_archive('file_1.csv','gztar',root_dir='C:/Users/wuzhenxiang/Desktop/股票数据分析')'C:\\Users\\wuzhengxiang\\Desktop\\StockDataAnalysis\\file_1.csv.tar.gz'10.get_archive_formats()描述:获取支持的压缩文件格式。目前支持的有:tar、zip、gztar、bztar。在Python3中,又支持了一种格式xztar语法:unpack_archive(filename,extract_dir=None,format=None)filename:文件路径extract_dir:解压的文件夹路径。文件夹可能不存在,会自动生成格式:解压格式,默认为None,解压格式会根据扩展名自动选择importshutil,oszip_path=os.path.join(os.getcwd(),"file_1.csv.tar")extract_dir=os.path.join(os.getcwd(),"aaa")shutil.unpack_archive(zip_path,extract_dir)11.rmtree()描述:递归删除文件语法:shutil.rmtree(path[,ignore_errors[,onerror]])#删除文件夹shutil.rmtree('C:/Users/wuzhenxiang/Desktop/Python知识点总结/test2')