2017-07-30 1 views
-1

Ich muss den Pfad des Unterverzeichnisses eines temporären Verzeichnisses an eine andere Funktion übergeben.So erhalten Sie den Pfad des Unterverzeichnisses eines temporären Verzeichnisses in Django

Echt Szenario:

Benutzer wird eine zip oder tar-Archiv laden, dann wird es in ein temporäres Verzeichnis extrahiert werden, jetzt muss ich den Pfad der extrahierten Verzeichnis.

Gibt es eine Möglichkeit, den Pfad eines Unterverzeichnisses zu erhalten, falls wir den Namen dieses Verzeichnisses nicht kennen könnten? Hier ist, was ich im Code mache;

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) 

mir Hilfe, bitte! Vielen Dank im Voraus!

+0

können Sie Beispiel geben was Pfad in Ihrem Code und was Sie wollen tatsächlich – Vaibhav

Antwort

2

Da Sie

client = docker.from_env() 
client.images.build(...) 

laufen Ich gehe davon aus, dass Sie ein Dockerfile im Archiv erwarten.

So, nachdem die Daten in tmpdir Extrahieren, versuchen Sie dies:

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, ...) 
+0

es funktioniert für mich, ich brauchte, war, dass für zwei scenerios eins mit dockerfile, aber ein anderes Szenario könnte nicht dockerfile haben, also habe ich in diesem Fall package.json anstelle von dockerfile verwendet und es funktioniert gut! Danke @Harald –

+0

Nun, es wirft wieder: 'docker_file = glob.glob (docker_glob) [0] IndexError: Listenindex außerhalb des Bereichs' Fehler! –

Verwandte Themen