patch格式的文件里面的内容如何提取

类似这种... 类似这种 展开
 我来答
百度网友46896a6
2017-05-03
知道答主
回答量:14
采纳率:0%
帮助的人:3.9万
展开全部
#自己在用的,代码写的比较矬,没什么异常处理,linux下一直在用,适合git生成的patch,win下没用过

#!/bin/python

import sys, os, getopt

#opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
global input_file, output_dir
input_file=""
output_dir="out"

def prepare(opts, args):
  global input_file, output_dir
  for op, value in opts:
    if op == "-i":
      input_file = value
    elif op == "-o":
      output_dir = value
    elif op == "-h":
      print "python getFileFromPatch.py -i xxx.patch [-o output dir]"
      sys.exit()

  print "input: ", input_file

  if os.path.exists(output_dir):
    print "out dir exists"
  else:
    print "no out dir"
    os.mkdir(output_dir)


def dumpFile():
  global input_file, output_dir
  start = False
  line_count = 0
  file_line_count = 0
  file_size = -1
  temp_line = ""
  file_buf = ""
  for line in open(input_file):
    line_count += 1
    #if "new file mode" in line:
    #  index = line.find("new file mode 10")
    if "--- /dev/null" in line:
      start = True
      line_count = 0
      #print line
      continue

    if start:
      if line_count == 1:
        temp_line = line[5:]
        file_path_full = output_dir + temp_line
        file_path_full = file_path_full.strip().lstrip().rstrip(',')
        index = file_path_full.rfind('/')
        file_path = file_path_full[0:index]
        file_name = file_path_full[index:]
        print "generate file: ", file_path+file_name
        if os.path.exists(file_path):
          print "out dir exists"
        else:
          print "no out dir"
          os.makedirs(file_path)
        continue
      if line_count == 2:
        line = line[11:]
        index2 = line.find(" @@")
        file_size = line[:index2]
        print "file_size =", file_size
        continue
      if float(file_line_count) < float(file_size):
        file_line_count += 1
        file_buf += line[1:]
      elif start:
        file_obj = open(file_path_full, "w")
        file_obj.writelines(file_buf)
        file_obj.close()
        # clean
        start = False
        line_count = 0
        file_line_count = 0
        file_size = -1
        temp_line = ""
        file_buf = ""


if __name__=="__main__":
  opts, args = getopt.getopt(sys.argv[1:], "hi:o:")
  prepare(opts, args)
  dumpFile()
虫古月
2015-01-31 · TA获得超过428个赞
知道小有建树答主
回答量:428
采纳率:100%
帮助的人:200万
展开全部
请百度搜索 万能提取工具
可以用此工具解析文件,从里面搜到图片,视频,音频等内容
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式