这篇教程Python 中 Shutil 模块详情写得很实用,希望能帮到您。 一、什么是shutilshutil 可以简单地理解为sh + util ,shell 工具的意思。shutil 模块是对os 模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。
二、shutil模块的主要方法1. shutil.copyfileobj(fsrc, fdst[, length=16*1024])copy 文件内容到另一个文件,可以copy指定大小的内容。这个方法是shutil 模块中其它拷贝方法的基础,其它方法在本质上都是调用这个方法。
让我们看一下它的源码: def copyfileobj(fsrc, fdst, length=16*1024): while 1: buf = fsrc.read(length) if not buf: break fdst.write(buf) 代码很简单,一看就懂。但是要注意,其中的fsrc ,fdst 都是使用open() 方法打开后的文件对象。 import shutil s =open('fsrc.txt','r') d=open('fdst.txt','w') shutil.copyfileobj(s,d,length=16*1024) 2. shutil.copyfile(src, dst)拷贝文件: shutil.copyfile('f1.log', 'f2.log') #目标文件无需存在 3. shutil.copymode(src, dst)仅拷贝权限。内容、组、用户均不变 shutil.copymode('f1.log', 'f2.log') #目标文件必须存在 4. shutil.copystat(src, dst)仅拷贝状态的信息,包括:mode bits , atime , mtime , flags shutil.copystat('f1.log', 'f2.log') #目标文件必须存在 5. shutil.copy(src, dst)拷贝文件和权限 import shutil shutil.copy('f1.log', 'f2.log') 6. shutil.copy2(src, dst)拷贝文件和状态信息 import shutil shutil.copy2('f1.log', 'f2.log') 7. shutil.copytree(src, dst, symlinks=False, ignore=None)递归的去拷贝文件夹 src :源文件夹 dst :复制至dst文件夹,该文件夹会自动创建,需保证此文件夹不存在,否则将报错 symlinks :是否复制软连接,True 复制软连接,False 不复制,软连接会被当成文件复制过来,默认False ignore :忽略模式,可传入ignore_patterns() copy_function :拷贝文件的方式,可以传入一个可执行的处理函数,默认为copy2 ,Python3 新增参数 ignore_dangling_symlinks :sysmlinks 设置为False 时,拷贝指向文件已删除的软连接时,将会报错,如果想消除这个异常,可以设置此值为True。默认为False ,Python3 新增参数。 import shutil,os folder1 = os.path.join(os.getcwd(),"aaa") # bbb与ccc文件夹都可以不存在,会自动创建 folder2 = os.path.join(os.getcwd(),"bbb","ccc") # 将"abc.txt","bcd.txt"忽略,不复制 shutil.copytree(folder1,folder2,ignore=shutil.ignore_patterns("abc.txt","bcd.txt")) 
8. shutil.rmtree(path[, ignore_errors[, onerror]])递归的去删除文件 import shutil shutil.rmtree('folder1') 9. shutil.move(src, dst)递归的去移动文件,它类似mv命令,其实就是重命名。 import shutil shutil.move('folder1', 'folder3') 10.shutil.make_archive(base_name, format[, root_dir[, base_dir, verbose, dry_run, owner, group, logger]) 创建压缩包并返回文件路径,例如:zip 、tar 创建压缩包并返回文件路径,例如:zip 、tar base_name :压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
- 如
data_bak 保存至当前路径 。 - 如:/tmp/data_bak =>保存至/tmp/
format :压缩包种类,“zip ”, “tar ”, “bztar ”,“gztar ”
root_dir :要压缩的文件夹路径(默认当前目录)
owner :用户,默认当前用户
group :组,默认当前组
logger :用于记录日志,通常是logging.Logger 对象
把当前目录下的文件压缩生成copy.zip 文件到当前目录下注意:此操作会出现递归拷贝压缩导致文件损坏(当前目录下的copy.zip 中会有copy.zip ) import shutil shutil.make_archives('D:/copy3/copy','zip',base_dir='D:/copy2//测试.txt') 把D:/copy2/测试.txt文件压缩,在D:/copy3/路径下生成copy.zip。 import shutil shutil.make_archives('copy','zip') 
三、总结到此这篇关于 Python 中 Shutil 模块详情的文章就介绍到这了,更多相关 Python 中 Shutil 模块内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net! Python关于时间序列calendar模块的深入讲解 深入理解Pytorch微调torchvision模型 |