gpt4 book ai didi

Python:如何通过排除第三个目录来使用 tarfile 模块获取 tar

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:02 25 4
gpt4 key购买 nike

我的目录结构是这样的

-- jenkins
|-- jobs
| |-- dir1
| | |-- build_dir--
| | `-- Autoyes
| |-- dir2
| | |-- build_dir--
| | `-- Manyes
| |-- dir3
| | |-- ArtFict
| | `-- build_dir--
| `-- hi
|-- tesst
`-- tets

我需要使用 tarfile 模块来获取 tar,方法是排除所有 dir1,dir2,dir3 和更多目录下的 "build_dir" 。我可以在子进程中使用一个非常简单的 tar 语句来实现此目的

tar --exclude="*/*/buid_dir" -czvf test.tgz jenkins

但我正在寻找一种Python式的方法来实现这一点,到目前为止我所做的并不排除“build_dir”目录。

import tarfile
import os,sys
import subprocess

def ProcesS (input):
Asub = subprocess.Popen (input,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
output,error = Asub.communicate()
return output,error

A = ['jenkins', 'jenkins/jobs', 'jenkins/jobs/dir1', 'jenkins/jobs/dir1/build_dir', 'jenkins/jobs/dir2', 'jenkins/jobs/dir2/build_dir', 'jenkins/jobs/dir3', 'jenkins/jobs/dir3/build_dir']

Tar = tarfile.open('Backme.tgz','w:gz')

#Tar.add(A,exclude='*/*/build_dir') #This throws the error

Tar.add(A) # creates a tar file without excluding the build_dir
Tar.close()

如果有人找到这个问题的答案,将会非常有帮助。

最佳答案

来自文档

TarFile.add(name, arcname=None, recursive=True, exclude=None, filter=None)

看起来您只需将其添加到排除中(您可能必须输入完整路径...)

看来你是这样的

tf = tarfile.open("sometar.tar","w")
def excludes_fn(name):
return "build" in name
tf.add("/base/folder",exclude=excludes_fn)

关于Python:如何通过排除第三个目录来使用 tarfile 模块获取 tar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23686963/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com