使用django上传时创建目录

时间:2010-08-09 06:31:58

标签: python django django-models django-views

从UI上传文件后,如何使用/ 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

3 个答案:

答案 0 :(得分:8)

使用Python的os模块可以实现创建目录(参见documentation)。例如:

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.renamedocumentation)按照您的选择移动文件(前提是您拥有必要的权限)。可以使用Subprocesses或使用Python module通过命令行解压缩(使用gzip模块的示例可以找到here)。

答案 1 :(得分:0)

所以,创建目录的正确答案是:

如果您想静默创建文件夹(如果它们不存在):

import os
os.makedirs(exist_ok=True)

如果文件夹已经存在则抛出错误:

import os
os.makedirs()

答案 2 :(得分:-1)

这是我使用的功能:

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