利用python脚本,固定文件长度进行压缩

这段代码实现了一个功能,将一个文件列表按照指定的间隔(例如20个文件一组)进行分割,并将每组文件压缩成一个tar包。文件名基于分组编号命名,所有tar包保存在特定目录下。这个脚本适用于大量文件的管理和组织。
摘要由CSDN通过智能技术生成

需求描述:存在一个list,长度为n,我想隔一定数量(如长度k)进行压缩。 打包成一堆长度为k的包,最后一个包不足k,内容放完就行。

代码如下:

代码中我加了很多注释,应该很方便看啦!

# ! /usr/bin/env python
# -*- coding:utf-8

import os
import tarfile
from tkinter.messagebox import NO


def split_list_by_n(list_collection, n):
    """将集合均分, 每份n个元素
    
    Args:
        :param list_collection:
        :param n:
        :return: 返回的结果为评分后的每份可迭代对象
    """

    for i in range(0, len(list_collection), n):
       yield list_collection[i: i + n]


if __name__ == "__main__":

    # 设置读取压缩文件的路径
    compressed_path = 'test/'     # 基于该脚本的相对路径,脚本与代压缩文件同一个目录,避免多级目录混乱
    file_list =  os.listdir(compressed_path)

    # 设置压缩的数量
    interval = 20    
    temp = split_list_by_n(file_list, interval)
    
    # 设置保存信息
    root_path = "/home/gongyan/tar_compress/test_tar/"    # bag 包 保存位置
    per_tar_name = "bag_"
    k = 0

    # 迭代
    for item in temp:
        # every item is a interval-length filelist   
        tar_name = "bag_" + "%03d"%k +'.tar'
        f = None
        with tarfile.open(os.path.join(root_path, tar_name),'w') as f:   
            for i in item:
                f.add(compressed_path+i)                 
            f.close()
        k = k + 1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

低吟浅笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值