1. 程式人生 > >【Python】打包壓縮軟體,命名軟體名為軟體的版型、遙控等資訊

【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函式時,一定要主要注意路徑!!!