用于在内存中为HttpResponse创建密码保护的zip的Python代码

用于在内存中为HttpResponse创建密码保护的zip的Python代码,python,memory,io,zip,7zip,Python,Memory,Io,Zip,7zip,我想为内存中的csv数据生成一个受密码保护的Zip文件,并通过Django HttpResponse返回网页。 到目前为止,我可以按如下方式为HttpResponse生成普通zip文件: from django.http import HttpResponse import io, csv, zipfile, subprocess #... # write csv in buffer buffer_string_csv = io.StringIO() writer = csv.writer(b

我想为内存中的csv数据生成一个受密码保护的Zip文件,并通过Django HttpResponse返回网页。 到目前为止,我可以按如下方式为HttpResponse生成普通zip文件:

from django.http import HttpResponse
import io, csv, zipfile, subprocess
#...

# write csv in buffer
buffer_string_csv = io.StringIO()
writer = csv.writer(buffer_string_csv)
writer.writerow(['foo','bar'])

# write zip in buffer
buffer_zip = io.BytesIO()
zip_file = zipfile.ZipFile(buffer_zip, 'w')
zip_file.writestr('foobar.csv', buffer_string_csv.getvalue())
zip_file.close()

# return zip file as response 
response = HttpResponse(buffer_zip.getvalue())
response['Content-Type'] = 'application/x-zip-compressed'
response['Content-Disposition'] = 'attachment; filename="foobar.zip"'
return response
问题是Zip文件的密码保护部分。
从中,我了解到密码保护Zip文件可以通过7-Zip实用程序创建

subprocess.run(['7z', 'a', '-pPASSWORD', '-y', 'password_foobar.zip'] + ['foobar.csv'])
可以在内存中执行此操作吗?
或者任何不需要将中间文件保存到文件系统的替代方案