使用Django上传时创建目录
在用户界面上传文件后,如何在/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
模块的例子可以在这里找到)。