接下来就可以瓜分文件,然后还原图片了。
- #!/usr/bin/env python
- import codecs, re
- ifile = 'access.log'
- suffix = 'jpg'
- pf = re.compile('^.*Content-Transfer-Encoding: binary\\\\x0D\\\\x0A\\\\x0D\\\\x0A')
- pb = re.compile('\\\\x0D\\\\x0A--.*$')
- try:
- with open(ifile, 'rb') as f:
- number = 1 #第一张图片序号为1
- while True:
- l = f.readline().strip() #攫取一行并去掉落末尾的换行符\n
- if not l: #文件读完返回''时退出轮回
- break
- l = re.sub(pf, '', l) #将数据前的字符调换为空
- l = re.sub(pb, '', l) #将数据后的字符调换为空
- img_file = '.'.join([str(number), suffix]) #图片文件名称
- print img_file #打印名字便利看进度
- with open(img_file, 'wb') as i: #解码并写入文件
- i.write(codecs.decode(l, 'string_escape'))
- number += 1 #下一张图片序号加1
- except IOError:
- pass
access.log含有多条日记,每条日记都包含图片数据。日记较大年夜,所以不应用readlines(),本来应用list也很占内存,且如许处理比较慢,要等法度榜样把全部文件读完。按行攫取日记后提掏出图片数据后解码写入文件即可。
【编辑推荐】
- Linux下Nginx+多Tomcat负载均衡实现详解
- 解决Nginx办事返回500状况码问题
- Caddy、 SSLDocker、Nginx 机能比较及应用体验
- Nginx的反向代劳与负载均衡
- 五分钟系列:Python 处理Nginx日记
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?AMD、百度12月14日结合宣布,基于AMD EPYC办事器平台的百度人工智能、大年夜数据、云计算(ABC)数据中间办事已经正式上线。>>>详细阅读
本文标题:从nginx日志原始二进制数据还原文件
地址:http://www.17bianji.com/lsqh/40037.html
1/2 1