如何解压缩 zip 文件并将其显示为 python-Django 中的列表
How to unzip a zip file and show it as list in python-Django
我正在学习 python 和 django,我想创建一个端点来获取 zip 文件并遍历它并向我显示 zip 文件中的项目列表。实现这个最简单的方法是什么?我尝试了一些东西,因为我对 django 的了解一点也不好。
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)
所以基本上我的目的是从中获取一个 zip 文件并重命名它并为每个文件制作一个 url。我声明的代码不是执行此操作的正确方法,因为它会带来一些错误,请您以正确的方法帮助我吗?
我还没有在实时 django 项目上测试过这段代码,但这是我为你的任务编写代码的方式。
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())
我正在学习 python 和 django,我想创建一个端点来获取 zip 文件并遍历它并向我显示 zip 文件中的项目列表。实现这个最简单的方法是什么?我尝试了一些东西,因为我对 django 的了解一点也不好。
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)
所以基本上我的目的是从中获取一个 zip 文件并重命名它并为每个文件制作一个 url。我声明的代码不是执行此操作的正确方法,因为它会带来一些错误,请您以正确的方法帮助我吗?
我还没有在实时 django 项目上测试过这段代码,但这是我为你的任务编写代码的方式。
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 上并且在
上出现 SyntaxErrorprint zf.namelist()
只需将其括在方括号中即可:
print(zf.namelist())