使用Django上传时创建目录

4 投票
3 回答
19684 浏览
提问于 2025-04-16 02:31

在用户界面上传文件后,如何在/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

所以,关于创建文件夹的正确做法是:

如果你想悄悄地创建文件夹(前提是这些文件夹还不存在):

import os
os.makedirs(exist_ok=True)

如果文件夹已经存在,就抛出一个错误:

import os
os.makedirs()
1

这是我使用的一个函数:

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

在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模块的例子可以在这里找到)。

撰写回答