【Python】打包壓縮軟體,命名軟體名為軟體的版型、遙控等資訊
阿新 • • 發佈:2018-11-11
原始碼:
# -*- 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函式時,一定要主要注意路徑!!!