python中zipfile、tarfile压缩文件模块的使用

ZipFile
压缩单个文件

import zipfile
import os

with zipfile.ZipFile('log.zip', 'w') as z:
    z.write('log.log')

解压文件

with zipfile.ZipFile('log.zip', 'r') as z:
    print(z.namelist())     # 查看压缩包中的文件列表
    print(z.read(z.namelist()[0]))  # 读出来压缩包中的第一个文件的内容打印到屏幕,也可保存到文件中
    # z.extractall('aaa')      # 解压,可设置解压路径
    # z.extract('log.log')      # 解压,可选择解压某个文件
    z.extractall()      # 解压全部

压缩某个目录下所有文件

def compress_file(zipfilename, dirname):      # zipfilename是压缩包名字,dirname是要打包的目录
    if os.path.isfile(dirname):
        with zipfile.ZipFile(zipfilename, 'w') as z:
            z.write(dirname)
    else:
        with zipfile.ZipFile(zipfilename, 'w') as z:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    if single_file != zipfilename:
                        filepath = os.path.join(root, single_file)
                        z.write(filepath)

compress_file('a.zip', '.')      # 执行函数

添加文件到已有的zip包中

def addfile(zipfilename, dirname):
    if os.path.isfile(dirname):
        with zipfile.ZipFile(zipfilename, 'a') as z:
            z.write(dirname)
    else:
        with zipfile.ZipFile(zipfilename, 'a') as z:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    if single_file != zipfilename:
                        filepath = os.path.join(root, single_file)
                        z.write(filepath)

addfile('a.zip', 'test.txt')

查看压缩包中的文件

def viewfile(zipfilename):
    with zipfile.ZipFile(zipfilename, 'r') as z:
        print(z.namelist())

viewfile('a.zip')

<br />
TarFile
压缩文件

import tarfile
import os

with tarfile.open('a.tar', 'w') as tar:
    tar.add('log.log', arcname='log.log')
    tar.add('test.txt', arcname='test.txt')

解压文件

with tarfile.open('a.tar', 'r') as tar:
    print(tar.getmembers())     # 查看压缩包内文件成员
    # tar.extract('test.txt')  # 可选择解压某个文件
    # tar.extractall('ccc')  # 可设置解压路径
    tar.extractall()  # 解压全部

压缩某个目录下所有文件

def compress_file(tarfilename, dirname):    # tarfilename是压缩包名字,dirname是要打包的目录
    if os.path.isfile(dirname):
        with tarfile.open(tarfilename, 'w') as tar:
            tar.add(dirname)
    else:
        with tarfile.open(tarfilename, 'w') as tar:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    # if single_file != tarfilename:
                    filepath = os.path.join(root, single_file)
                    tar.add(filepath)

compress_file('test.tar', 'test.txt')
compress_file('t.tar', '.')

添加文件到已有的tar包中

def addfile(tarfilename, dirname):    # tarfilename是压缩包名字,dirname是要打包的目录
    if os.path.isfile(dirname):
        with tarfile.open(tarfilename, 'a') as tar:
            tar.add(dirname)
    else:
        with tarfile.open(tarfilename, 'a') as tar:
            for root, dirs, files in os.walk(dirname):
                for single_file in files:
                    # if single_file != tarfilename:
                    filepath = os.path.join(root, single_file)
                    tar.add(filepath)

addfile('t.tar', 'ttt.txt')
addfile('t.tar', 'ttt')

推荐阅读更多精彩内容