python使用例子三

ota diff package

#!/usr/bin/env python
# --*-- encoding=UTF-8 --*--
#author by fangwh @2017.11.13
import sys
import zipfile
import os
import tempfile
import shutil
import datetime
import time

OTA_TOOLS="./build/tools/releasetools/ota_from_target_files  --block"
SIGN_TOOLS ="./build/tools/releasetools/filezip.py"
SP_MONITOR_FILE = "../lichee/tools/pack/sp_image/PX7A_A80_Release_Android_scatter.txt"

def gen_outfile_name(src_file, dest_file):
    print (src_file)
    print (dest_file)
    src_index = src_file.rfind("_")
#    src_index = src_file.rfind("_",0,src_index)
    print (src_index)
    src_file_first = src_file[0:src_index +1]
    dest_file_list = dest_file.split('_')
    print (dest_file_list)
#    out_file = src_file_first +dest_file_list[len(dest_file_list)-3] + "_OTA_DIFF.zip"
    out_file = src_file_first +dest_file_list[len(dest_file_list)-3] +"_"+ dest_file_list[len(dest_file_list)-2] + "_OTA_DIFF.zip"
    print (out_file)
    return out_file

def print_zipfile_info(zip_file):
    if zipfile.is_zipfile(zip_file):
        src_file_list = zipfile.ZipFile(zip_file,'r')
        # src_file_list.extractall(src_file_path)
        for file in src_file_list.namelist():
            print (file)
        for info in src_file_list.infolist():
            print info.filename
            print '\tComment:\t', info.comment
            print '\tModified:\t', datetime.datetime(*info.date_time)
            print '\tSystem:\t\t', info.create_system, '(0 = Windows, 3 = Unix)'
            print '\tZIP version:\t', info.create_version
            print '\tCompressed:\t', info.compress_size, 'bytes'
            print '\tUncompressed:\t', info.file_size, 'bytes'
            print
def get_ota_file_list(path):
    print path
    filelist = []
    keyworld1= "PayDroid"
    keyworld2 = "ORG"
    keyworld3 = "zip"
    
    if path is None:
       path = os.getcwd()
    for dirpath,dirnames,filenames in os.walk(path):
        for filename in filenames:
             if filename.find(keyworld1,0, len(filename)) >=0 \
                and filename.find(keyworld2,0, len(filename)) >=0 \
                and filename.endswith(keyworld3):
                filelist.append(filename)
                filelist.sort()
    
    return filelist
    
def extract_file(zip_file, path):
    if os.path.exists(path):
        shutil.rmtree(path)
    os.mkdir(path)
    if zipfile.is_zipfile(zip_file):
        file_list = zipfile.ZipFile(zip_file, 'r')
        file_list.extractall(path)

if __name__ == '__main__':
    print (sys.version)
    print (sys.argv)
    length = len(sys.argv)
    path_mode = False
    path=''
    if length  == 3:
      src_file = sys.argv[1]
      dest_file = sys.argv[2]
    elif length == 2:
      path = sys.argv[1]
      if not os.path.isdir(path):
         print "error:not a directory!!"
         exit(1)
      path_mode = True
      
#    dest_file = "PX7A_A80_PayDroid_6.0.1_Taurus_V05.1.01_20171107_OTA.zip"
#    src_file = "PX7A_A80_PayDroid_6.0.1_Taurus_V05.1.01_20171105_OTA.zip"
    if not path_mode:
      out_file = gen_outfile_name(src_file,dest_file)
      print (out_file)

  #    print_zipfile_info(src_file)
  #    print_zipfile_info(dest_file)
      os.system("python %s -i  %s %s %s" % (OTA_TOOLS,src_file, dest_file, out_file ))
      os.system("python %s %s %s" % (SIGN_TOOLS,out_file,SP_MONITOR_FILE))
    else:
      filelist = get_ota_file_list(path)
      today = time.strftime("%Y%m%d",time.localtime())
      print today
      out_path = "../"+str(today)+"_OTA_DIFF"
      if os.path.exists(out_path):
        shutil.rmtree(out_path)
      os.mkdir(out_path)
      dest_file = path +"/"+ filelist[len(filelist)-1]
      print dest_file
      for file in filelist[0:len(filelist)-1]:
         src_file = path +"/"+file
         out_file = gen_outfile_name(src_file,dest_file)
         os.system("python %s -i  %s %s %s" % (OTA_TOOLS,src_file, dest_file, out_file ))
         os.system("python %s %s %s" % (SIGN_TOOLS,out_file,SP_MONITOR_FILE))
         base_file_name = os.path.basename(out_file)
         print out_path+"/"+base_file_name
         shutil.move(out_file, out_path+"/"+base_file_name)

发布了17 篇原创文章 · 获赞 2 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/toove/article/details/100990852