我需要将临时目录的子目录路径传递给另一个函数。
真实场景:
用户将上传zip或tar存档,然后将其提取到临时目录中,现在我需要该解压缩目录的路径。
有没有办法获取子目录的路径,以防我们无法知道该目录的名称? 这就是我在代码中所做的事情;
views.py
if form.is_valid():
deployment = TarWithDocker()
deployment.name = form.cleaned_data['name']
deployment.user = request.user
deployment.archive = form.cleaned_data['archive']
deployment.save()
tmpdir = tempfile.mkdtemp()
saved_umask = os.umask(0o077)
path = os.path.join(tmpdir)
arpath = deployment.archive.path
patoolib.extract_archive(arpath, outdir=path)
client = docker.from_env()
dirp = os.path.join(path)
client.images.build(path=# Here i need to pass sub path of directory of temp dir #}
, gzip=False, tag='newdep')
os.umask(saved_umask)
shutil.rmtree(tmpdir)
请帮帮我! 在此先感谢!
答案 0 :(得分:2)
鉴于您正在运行
client = docker.from_env()
client.images.build(...)
我假设您希望档案中有Dockerfile
。
因此,在将数据提取到tmpdir
后,请尝试以下操作:
import glob
docker_glob = os.path.join(tmpdir, "*", "Dockerfile")
docker_file = glob.glob(docker_glob)[0]
docker_folder = os.path.dirname(docker_file)
client.images.build(path=docker_folder, ...)