Создать каталог при загрузке с помощью Django - PullRequest
4 голосов
/ 09 августа 2010

После загрузки файла из пользовательского интерфейса, как создать новый каталог с текущей меткой времени в / opt / files / и скопировать загруженный zip-файл в этот каталог, разархивировать zip-файл в новый каталог и сохранить новое имя каталога в переменной

def upload_info(request):
    if request.method == 'POST':
        file=request.FILES['file']
        dir = "/opt/files"
        file_name = "%s/%s" % (dir, file.name)
        form = UploadFileForm(request.POST, request.FILES)
        try:
            handle_uploaded_file( file_name , file )

def handle_uploaded_file(file_name,f):
    destination = open(file_name, 'wb+')
    for chunk in f.chunks():
        destination.write(chunk)
    destination.close()
    return

Ответы [ 2 ]

8 голосов
/ 09 августа 2010

Создание каталога может быть достигнуто с помощью модуля Python os (см. документация ).Например:

import os
from datetime import datetime
dirname = datetime.now().strftime('%Y.%m.%d.%H.%M.%S') #2010.08.09.12.08.45 
os.mkdir(os.path.join('/opt/files', dirname))

Вы можете использовать os.rename ( документация ), чтобы переместить файл по вашему выбору (при условии, что у вас есть необходимые разрешения).Распаковать можно через командную строку, используя Подпроцессы или Модуль Python (Примеры использования gzip здесь можно найти здесь ).

0 голосов
/ 17 сентября 2014

Вот функция, которую я использую:

def makedirs(path):
    try:
        os.makedirs(path)
    except OSError as e:
        if e.errno == 17:
            # Dir already exists. No biggie.
            pass
...