如何解压缩zip文件并在python Django中将其显示为列表
我正在学习python和django,我想创建一个端点,它接受zip文件并对其进行迭代,并显示zip文件中的项目列表。实现这一点最简单的方法是什么?我尝试过一些东西,因为我在django的知识一点也不好如何解压缩zip文件并在python Django中将其显示为列表,python,django,zip,unzip,Python,Django,Zip,Unzip,我正在学习python和django,我想创建一个端点,它接受zip文件并对其进行迭代,并显示zip文件中的项目列表。实现这一点最简单的方法是什么?我尝试过一些东西,因为我在django的知识一点也不好 from django.core.files.storage import FileSystemStorage import zipfile class Upload(View): def post(self, request): context = {}
from django.core.files.storage import FileSystemStorage
import zipfile
class Upload(View):
def post(self, request):
context = {}
if request.method == 'POST':
uploaded_file = request.FILES['filename']
zf = zipfile.ZipFile(uploaded_file)
print zf.namelist()
for filename in zf.namelist():
fs = FileSystemStorage()
rename = 'uploadedFile.jpg'
name = fs.save(rename, filename)
context['url'] = fs.url(name)
return render(request, 'app.html', context)
所以基本上我的目的是从中获取一个zipfile并重命名它,然后为每个zipfile创建一个url。我声明的代码不是这样做的正确方法,因为它会带来一些错误,你能帮我找到正确的方法吗 我还没有在LiveDjango项目上测试过这段代码,但这是我编写任务代码的方式
from zipfile import ZipFile
def get_filenames(path_to_zip):
""" return list of filenames inside of the zip folder"""
with ZipFile(path_to_zip, 'r') as zip:
return zip.namelist()
在你看来:
class Upload(View):
def post(self, request):
# as you use class based views you can skip the check of request type (request.method == 'POST').
# It always will be POST as it post() method
filenames = get_filenames('your_zip.zip')
return render(request, 'app.html', {'filenames': filenames})
这只是一个例子,但您可以添加一些额外的逻辑,如重命名等
p.S.无法添加评论,但如果您使用的是python3,并且使用了SyntaxError
print zf.namelist()
用括号括起来:
print(zf.namelist())
那是什么错误?错误在
zf.namelist()
syntax error@SelcukYeah它可以工作,我像你一样做了,修改了一点。谢谢你帮我