python模块--shutil
是一种高层次的文件操作工具,用来处理文件、文件夹和压缩包
常用方法:
- copyfileobj(fsrc, fdst, length=16*1024)
将fsrc文件中的内容复制到fdst文件中,可以设置要复制的长度,两个文件都要先打开
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import shutil shutil.copyfileobj(open("data.txt","r"),open("newData.txt","w"))
-
copyfile(src, dst, *, follow_symlinks=True)
将src文件中的内容复制到dst文件中,文件不需要打开
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copyfile("data.txt","newData.txt")
-
copymode(src, dst, *, follow_symlinks=True)
仅拷贝权限。内容、组、用户均不变
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copymode('log1.log', 'log2.log')
-
copystat(src, dst, *, follow_symlinks=True)
只复制权限、最后访问时间、最后修改时间,不会复制文件内容
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copystat('log1.log', 'log2.log')
-
copy(src, dst, *, follow_symlinks=True)
拷贝文件和权限
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copy('log1.log', 'log2.log')
-
copy2(src, dst, *, follow_symlinks=True)
拷贝文件和状态信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copy2('log1.log', 'log2.log')
-
copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
ignore_dangling_symlinks=False)
递归的去拷贝文件夹,如果第3个参数是True,则复制目录时将保持文件夹下的符号连接(也就是快捷方式),如果第3个参数是False,则将在复制的目录下生成物理副本来替代符号连接,也可以用shutil.ignore_patterns(*patterns)来忽略一些特定文件格式的文件
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.copytree('old', 'new', ignore=shutil.ignore_patterns('*.c', 'linux*'))
-
rmtree(path, ignore_errors=False, onerror=None)
递归的去删除文件,也就是linux中的rm -r
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.rmtree('old')
-
move(src, dst, copy_function=copy2)
相当于linux中的mv,重命名
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.move('old', 'oldFile')
-
make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
dry_run=0, owner=None, group=None, logger=None)
用来压缩和解压文件
参数:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
base_name 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
format 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir 要压缩的文件夹路径(默认当前目录)
owner 用户,默认当前用户
group 组,默认当前组
logger 用于记录日志,通常是logging.Logger对象
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
shutil.make_archive("hahaha","gztar","H:\\linux编程\\basefile")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#将文件添加到指定的压缩包中 z=zipfile.ZipFile("hahaha.tar.gaz","w") z.write("data.txt") z.close()
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
z=zipfile.ZipFile("hahaha.tar.gaz","r") #解压压缩包所有的文件 z.extractall() #解压出指定的文件 z.extract("xxxxx")
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import tarfile # 压缩 tar = tarfile.open('hahaha.tar','w') #将xxx文件添加到hahaha.tar中,并且将文件名该为www tar.add('xxx', arcname='www') tar.close() # 解压 tar = tarfile.open('hahaha.tar','r') #解压所有的文件 tar.extractall() #解压特定的文件 tar.extract("xxx") tar.close()