You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python批量创建ZIP文件:栅格文件按日期分组压缩需求

批量按文件名前缀压缩对应文件到同名ZIP

嘿,作为Python新手能写出单组文件的压缩代码已经很棒啦!针对你需要批量按前缀压缩的需求,我们可以通过自动提取并去重文件名前缀,再循环处理每个前缀来实现,不用手动修改文件名重复写代码。

完整实现代码

import os
import zipfile

# 目标文件夹路径,建议用raw字符串避免转义字符问题
target_dir = r'F:\AOS_input'

# 第一步:收集所有需要处理的文件名前缀(自动去重)
prefixes = set()
for folder, subfolders, files in os.walk(target_dir):
    for file in files:
        # 提取你需要的前缀(对应"L5_xxxxxx"格式,取前9个字符)
        prefix = file[:9]
        prefixes.add(prefix)

# 第二步:循环处理每个前缀,生成对应ZIP文件
for prefix in prefixes:
    # 动态生成ZIP文件名,和前缀保持一致
    zip_filename = os.path.join(target_dir, f'{prefix}.zip')
    # 使用with语句自动管理ZIP文件,避免手动关闭的麻烦
    with zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED) as zip_file:
        # 遍历文件夹找到所有当前前缀的文件
        for folder, subfolders, files in os.walk(target_dir):
            for file in files:
                if file.startswith(prefix):
                    file_full_path = os.path.join(folder, file)
                    # 写入ZIP时保留原文件名,避免带层级路径
                    zip_file.write(file_full_path, file)
    print(f"已完成压缩:{zip_filename}")

关键部分解释

  • 用集合收集前缀:set()会自动帮你去掉重复的前缀,避免同一个前缀被重复处理,效率更高。
  • 动态生成ZIP文件:通过f-string f'{prefix}.zip'直接把前缀作为ZIP文件名,完全不用手动逐个修改。
  • with语句的优势:相比你原来手动调用close(),with会在代码块结束后自动关闭ZIP文件,更安全也更简洁。
  • raw字符串路径:r'F:\AOS_input'避免了路径中\被当成转义字符的问题,这是新手很容易踩的坑哦。

灵活调整提示

如果你的前缀长度不固定(比如有的是L7_202301,有的是S2_20240510),可以按分隔符来提取前缀:

# 按第一个下划线分割,取前两部分拼接成前缀(比如"S2_20240510"会被提取为"S2_20240510")
prefix = '_'.join(file.split('_')[:2])

这样不管前缀长度如何,只要格式是[标识]_[日期]就能正确提取。

注意事项

  • 确保目标文件夹有读写权限,否则会出现权限报错。
  • 如果文件夹里有无关文件,代码只会处理符合前缀规则的文件,不用担心误压缩。

内容的提问来源于stack exchange,提问作者Maria Kayed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:37:40