import zipfile # 无法解压rar、7z等压缩格式
from io import BytesIO
def bytes_zip_to_bytes_content(bytes_zip_content):
zip_file = BytesIO(bytes_zip_content) # 相当于with open('/.../file.zip') as zip_file:
f = zipfile.ZipFile(file=zip_file)
for f_name in f.namelist():
file_bytes = f.read(f_name)
file_info = f.getinfo(f_name)
print(f'文件名{f_name.encode("cp437").decode("gb18030")}') # 中文文件名防止乱码
print(f'文件位置偏移{file_info.header_offset}')
print(f'原始文件大小{file_info.file_size}')
print(f'原始字节流大小{len(bytes_zip_content)}应该约等于压缩文件大小{file_info.compress_size}')
yield file_bytes
if __name__ == "__main__":
import requests
r = requests.get(url='http://......file.zip') # 下载压缩文件
bytes_zip_content = r.content # 压缩文件字节流
bytes_zip_to_bytes_content(bytes_zip_content)
参考资料: