-1

我需要将临时目录的子目录路径传递给另一个函数。

真实场景:

用户将上传一个 zip 或 tar 存档,然后将其提取到一个临时目录中,现在我需要该提取目录的路径。

如果我们不知道该目录的名称,有没有办法获取子目录的路径?这是我在代码中所做的;

视图.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)

请帮帮我!提前致谢!

4

1 回答 1

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, ...)
于 2017-07-30T17:42:20.933 回答