作家
登录

从nginx日志原始二进制数据还原文件

作者: 来源: 2017-12-21 12:06:39 阅读 我要评论

接下来就可以瓜分文件,然后还原图片了。


  1. #!/usr/bin/env python 
  2.  
  3. import codecs, re 
  4.  
  5.  
  6. ifile = 'access.log' 
  7. suffix = 'jpg' 
  8.  
  9. pf = re.compile('^.*Content-Transfer-Encoding: binary\\\\x0D\\\\x0A\\\\x0D\\\\x0A'
  10. pb = re.compile('\\\\x0D\\\\x0A--.*$'
  11.  
  12. try: 
  13.     with open(ifile, 'rb'as f: 
  14.         number = 1 #第一张图片序号为1 
  15.         while True
  16.             l = f.readline().strip() #攫取一行并去掉落末尾的换行符\n 
  17.             if not l: #文件读完返回''时退出轮回 
  18.                 break 
  19.             l = re.sub(pf, '', l) #将数据前的字符调换为空 
  20.             l = re.sub(pb, '', l) #将数据后的字符调换为空 
  21.             img_file = '.'.join([str(number), suffix]) #图片文件名称 
  22.             print img_file #打印名字便利看进度 
  23.             with open(img_file, 'wb'as i: #解码并写入文件 
  24.                 i.write(codecs.decode(l, 'string_escape')) 
  25.             number += 1 #下一张图片序号加1 
  26. except IOError: 
  27.     pass 

access.log含有多条日记,每条日记都包含图片数据。日记较大年夜,所以不应用readlines(),本来应用list也很占内存,且如许处理比较慢,要等法度榜样把全部文件读完。按行攫取日记后提掏出图片数据后解码写入文件即可。

【编辑推荐】

  1. Linux下Nginx+多Tomcat负载均衡实现详解
  2. 解决Nginx办事返回500状况码问题
  3. Caddy、 SSLDocker、Nginx 机能比较及应用体验
  4. Nginx的反向代劳与负载均衡
  5. 五分钟系列:Python 处理Nginx日记
【义务编辑:武晓燕 TEL:(010)68476606】

  推荐阅读

  百度ABC数据中心上线:基于单路AMD EPYC

【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞?AMD、百度12月14日结合宣布,基于AMD EPYC办事器平台的百度人工智能、大年夜数据、云计算(ABC)数据中间办事已经正式上线。>>>详细阅读


本文标题:从nginx日志原始二进制数据还原文件

地址:http://www.17bianji.com/lsqh/40037.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)