【Python】打包压缩软件,命名软件名为软件的版型、遥控等信息

源代码:

# -*- 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函数时,一定要主要注意路径!!!

猜你喜欢

转载自blog.csdn.net/Beyond_1024/article/details/83418330