如何在Django

时间:2017-07-30 08:25:48

标签: python django forms temporary-files dockerpy

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

真实场景:

用户将上传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)

请帮帮我! 在此先感谢!

1 个答案:

答案 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, ...)