You need to enable JavaScript to run this app. Python使用tarfile打包时排除.git文件夹的实现方案
优惠活动
大模型
产品
解决方案
定价
更多

Python使用tarfile打包时排除.git文件夹的实现方案

Python tar打包排除.git目录的替代实现方案

Python 3.12及以上版本中,tarfile模块的tar.add()方法确实正式弃用了exclude参数,官方推荐使用filter参数完成过滤逻辑,以下是具体实现方式:

1. 代码场景(使用Python tarfile模块)

自定义过滤函数传入filter参数即可:

import tarfile

def git_filter(tarinfo):
    # 匹配所有.git目录及内部文件,匹配成功返回None则跳过打包
    if ".git" in tarinfo.name.split("/"):
        return None
    # 其他文件/目录正常保留
    return tarinfo

with tarfile.open("repo_archive.tar.gz", "w:gz") as tar:
    # 打包当前目录下所有内容,传入自定义过滤规则
    tar.add(".", arcname=".", filter=git_filter)

如果需要同时排除其他目录,只需要在过滤函数中新增判断条件即可,灵活性比旧的exclude参数更高。

2. 命令行场景(直接调用系统tar工具)

如果不需要通过Python代码实现,直接使用终端命令即可快速完成打包:

  • 执行命令:tar -zcvf repo_archive.tar.gz --exclude='.git' ./
    如果需要排除多个目录,追加多个--exclude参数即可,示例:tar -zcvf repo_archive.tar.gz --exclude='.git' --exclude='node_modules' --exclude='__pycache__' ./

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:27:03