源代码:
# -*- coding: utf-8 -*-
#coding=utf-8
'''
打包软件脚本
脚本说明:打包后压缩文件的命名为(版型、屏参、遥控名、版本号、编译时间等信息)
注意事项:执行脚本时需要带该软件的配置文件的编号
执行方法:python zip.py XXX
'''
import zipfile
import sys
import os
import re
import datetime
#==========================================================================================
def zip_files( files, zip_name ):
zip = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED)
for file in files:
print ('compressing', file) #压缩函数
zip.write( file )
zip.close()
print ('compressing finished')
#==========================================================================================
result = os.popen("svn info")
res = result.read()
infile_new = open("test.txt","w")
for line in res.splitlines():
if "Revision" in line: #获取版本号 以SVN_XXX的格式
Strsvn = line.replace(' ','')
Strsvn = Strsvn.replace('Revision','svn')
Strsvn = Strsvn.replace(':','_')
infile_new.close()
#==========================================================================================
TimeStr = open('./kernel/android/nougat/out/target/product/RealtekATV/system/build.prop')
for line in TimeStr:
if "ro.build.version.incremental=" in line:
Tstr = line.split('.')[-1]
Tstr = str(int(Tstr))
path1 = os.getcwd() #获取编译时间
time_str = datetime.datetime.now().strftime('%Y%m%d')
os.chdir('ModelSelect')
str_ = sys.argv[1]
#==========================================================================================
pattern = re.compile('"(.*)"')
for parent,dirnames,filenames in os.walk('.'):
for dirname in dirnames:
if os.path.isdir(dirname):
if str_ in dirname:
os.chdir(dirname)
for parent,dirnames,filenames in os.walk('.'):
for filename in filenames:
if filename == "customer.h":
FileName = open('customer.h','r+') #获取命名所需的屏参、遥控等参数
for line in FileName:
if "#define CUSTOMER_PANEL " in line:
PanName = pattern.findall(line)[0]
if "#define CUSTOMER_IR " in line:
IRName = pattern.findall(line)[0]
if "#define CUSTOMER_PCB_NAME " in line:
PCBName = pattern.findall(line)[0]
if "#define CUSTOMER_PCB_IC_TYPE " in line:
ICName = pattern.findall(line)[0]
#==========================================================================================
os.chdir(path1)
Newname = "[RTD"+ str(PCBName) + "]_[" + "Model_" + str(str_)+ "]_" + str(PanName)+ "_" + str(IRName) + "_" + str(Strsvn) + "_"+ str(time_str) + str(Tstr)
os.chdir("image_file_creator")
files = ['./install.img']#文件的位置
zip_file = Newname+".zip"#压缩包名字
zip_files(files, zip_file)
代码笔记:
1. 压缩函数
def zip_files( files, zip_name ):
zip = zipfile.ZipFile(zip_name,'w',zipfile.ZIP_DEFLATED)
for file in files:
print ('compressing', file) #压缩函数
zip.write( file )
zip.close()
print ('compressing finished')
2. 替换字符串中的某个字符
Strsvn = Strsvn.replace(':','_')
':'替换成 '_'
3. 获取当前时间
time_str = datetime.datetime.now().strftime('%Y%m%d')
在使用open函数时,一定要主要注意路径!!!
在使用open函数时,一定要主要注意路径!!!
在使用open函数时,一定要主要注意路径!!!