У меня есть файл zip
, который я получаю, когда пользователь загружает файл. zip
, по сути, содержит файл json
, который я хочу прочитать и обработать, не создавая сначала файл zip
, а затем распаковывая его и читая содержимое внутреннего файла.
В настоящее время я только более длинный процесс, который выглядит примерно так:
import json
import zipfile
@csrf_exempt
def get_zip(request):
try:
if request.method == "POST":
try:
client_file = request.FILES['file']
file_path = "/some/path/"
# first dump the zip file to a directory
with open(file_path + '%s' % client_file.name, 'wb+') as dest:
for chunk in client_file.chunks():
dest.write(chunk)
# unzip the zip file to the same directory
with zipfile.ZipFile(file_path + client_file.name, 'r') as zip_ref:
zip_ref.extractall(file_path)
# at this point we get a json file from the zip say `test.json`
# read the json file content
with open(file_path + "test.json", "r") as fo:
json_content = json.load(fo)
doSomething(json_content)
return HttpResponse(0)
except Exception as e:
return HttpResponse(1)
Как видите, это включает 3 шага, чтобы наконец получить содержимое из файла zip
в память. Мне нужно получить содержимое файла zip
и загрузить его непосредственно в память.
Я обнаружил, что при переполнении стека я нашел несколько похожих вопросов, таких как этот { ссылка }. Но я не уверен, в какой момент я вызову эту операцию, упомянутую в посте
Как мне этого добиться?
Примечание: Я использую django в бэкенд. В архиве всегда будет один json файл.