莫愁前路无知己,天下谁人不识君。。。。

python重要知识----------压缩与解压

上一篇 / 下一篇  2018-01-02 15:00:53 / 个人分类:python知识精髓

# coding:utf-8
import gzip
import tarfile
import os
import zipfile
# g = gzip.GzipFile(filename="", mode="wb", compresslevel=9,
#                   fileobj=open('E:\\test\\sitemap.log.gz', 'wb'))
# g.write(open('E:\\list4.txt').read())
# g.close()
g = gzip.GzipFile(mode="rb", fileobj=open('e:\\test\\sitemap.log.gz', 'rb'))
open(r"E:\\test\\haha1.txt", "wb").write(g.read())
A1 gz 压缩1
def n_gz(f_name):
    g_file = gzip.GzipFile(filename="", mode="wb", compresslevel=9,
                  fileobj = open(f_name + '.gz', 'wb'))
    g_file.write(open(f_name).read())
    g_file.close()
c = "E:\\test\\wage.txt"
n_gz(c)
A2 gz 压缩2
def sn_gz(file_name):
    with open(file_name, 'rb') as plain_file:
        with gzip.open(file_name +'.gz', 'wb') as zip_file:
            zip_file.writelines(plain_file)
b = "E:\\test\\haha.txt"
sn_gz(b)
A3 gz 解压
def un_gz(file_name):  
    f_name = file_name.replace(".gz", "")
    # 获取文件的名称,去掉
    g_file = gzip.GzipFile(file_name)
    # 创建gzip对象
    open(f_name, "w+").write(g_file.read())
    # gzip对象用read()打开后,写入open()建立的文件中。
    g_file.close()
    # 关闭gzip对象
a = 'e:\\test\\sitemap.log.gz'
un_gz(a)
B1 压缩.taz
#一次性打包整个根目录。空子目录会被打包。
#如果只打包不压缩,将"w:gz"参数改为"w:"或"w"即可。
def make_tgz(output_filename, source_dir):
    with tarfile.open(output_filename, "w:gz") as tar:
        tar.add(source_dir, arcname=os.path.basename(source_dir))

a = "test.tar.gz"
b = 'e:\\test'
make_tgz(a, b)
#逐个添加文件打包,未打包空子目录。可过滤文件。
#如果只打包不压缩,将"w:gz"参数改为"w:"或"w"即可。
def make_targz_one_by_one(output_filename, source_dir):
    tar = tarfile.open(output_filename, "w:gz")
    for root,dir,files in os.walk(source_dir):
        for file in files:
            pathfile = os.path.join(root, file)
            tar.add(pathfile)
        tar.close()
B2 解压 taz
def un_tar(file_name):
    tar = tarfile.open(file_name)
    names = tar.getnames()
    if os.path.isdir(file_name + "_files"):
        pass
    else:
        os.mkdir(file_name + "_files")
    #由于解压后是许多文件,预先建立同名文件夹
    for name in names:
        tar.extract(name, file_name + "_files/")
    tar.close()
a = 'e:\\bbc\\test.tar.gz'
un_tar(a)
#打包目录为zip文件(未压缩)
# def make_zip(source_dir, output_filename):
#     zipf = zipfile.ZipFile(output_filename, 'w')
#     pre_len = len(os.path.dirname(source_dir))
#     for parent, dirnames, filenames in os.walk(source_dir):
#         for filename in filenames:
#             pathfile = os.path.join(parent, filename)
#             arcname = pathfile[pre_len:].strip(os.path.sep)   #相对路径
#             zipf.write(pathfile, arcname)
#         zipf.close()
#解压zip文件
# def un_zip(file_name):
#     """unzip zip file"""
#     zip_file = zipfile.ZipFile(file_name)
#     if os.path.isdir(file_name + "_files"):
#         pass
#     else:
#         os.mkdir(file_name + "_files")
#     for names in zip_file.namelist():
#         zip_file.extract(names,file_name + "_files/")
#     zip_file.close()

TAG: 压缩与解压

 

评分:0

我来说两句

Open Toolbar