Python3学习之路~5.6 shutil & zipfile & tarfile模块

高级的 文件、文件夹、压缩包 处理模块

shutil.copyfileobj(fsrc, fdst[, length])#将文件内容拷贝到另一个文件中,可以部分内容
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)
shutil.copytree(src, dst, symlinks=False, ignore=None)    #递归的去拷贝文件
shutil.rmtree(path[, ignore_errors[, onerror]])            #递归的去删除文件
shutil.move(src, dst)                                    #递归的去移动文件
shutil.make_archive(base_name, format,...)                #创建压缩包并返回文件路径,例如:zip、tar
'''
base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
如:www                        =>保存至当前路径
如:/Users/wupeiqi/www         =>保存至/Users/wupeiqi/
format:    压缩包种类,“zip”, “tar”, “bztar”,“gztar”
root_dir:    要压缩的文件夹路径(默认当前目录)
owner:    用户,默认当前用户
group:    组,默认当前组
logger:    用于记录日志,通常是logging.Logger对象
'''

代码实例:

import shutil

with open('yesterday.txt',encoding='UTF-8') as f1,
    open('yesterday2.txt','w',encoding='UTF-8') as f2:
    shutil.copyfileobj(f1,f2) #将文件内容拷贝到另一个文件中,可以部分内容

shutil.copyfile('yesterday2.txt','yesterday3.txt') #拷贝文件
shutil.copy('yesterday2.txt','yesterday4.txt') #拷贝文件和权限
shutil.copy2('yesterday2.txt','yesterday5.txt') #拷贝文件和状态信息
shutil.copytree('test','new_test') #递归的去拷贝文件,即拷贝test目录下的所有子目录和文件到new_test目录中
shutil.rmtree('new_test') #递归的去删除文件
shutil.move('test','Day05') #递归的去移动文件

# 将 D:python-studys14Day03 下的文件打包放置当前程序目录,文件名为shutil_archive_test.zip
shutil.make_archive('shutil_archive_test','zip','D:python-studys14Day03')

# 将 D:python-studys14Day03 下的文件打包放置 D:/test 目录,文件名为shutil_archive_test.zip
shutil.make_archive("D:/test/shutil_archive_test", 'zip', root_dir='D:python-studys14Day03')
View Code

shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall()
z.close()
zipfile 压缩解压
import tarfile

# 压缩
tar = tarfile.open('your.tar','w')
tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')
tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')
tar.close()

# 解压
tar = tarfile.open('your.tar','r')
tar.extractall()  # 可设置解压地址
tar.close()
tarfile 压缩解压
原文地址:https://www.cnblogs.com/zhengna/p/9229634.html