import os, zipfile, sys if len(sys.argv) < 3: print('Usage: python maketns.py ... ') print('Note that different lua source files are simply concatenated.') sys.exit(0) outputFileName = sys.argv[1] inputFileNames = sys.argv[2:len(sys.argv)] #hex values of a blank tns file blankTnsHexValues = [ '2a', '54', '49', '4d', '4c', '50', '30', '35', '30', '30', '14', '00', '00', '00', '0d', '00', '3c', '17', '8d', '3e', '73', '45', '68', '44', '40', '01', '00', '00', '93', '02', '00', '00', '0c', '00', '00', '00', '44', '6f', '63', '75', '6d', '65', '6e', '74', '2e', '78', '6d', '6c', '0f', 'ce', 'd8', 'd2', '81', '06', '86', '5b', '62', '81', 'c2', 'a6', '21', 'a5', 'fd', '08', '23', '0f', '92', 'ae', '38', '45', '2a', '05', '66', 'bb', 'c7', 'df', '98', '87', '55', '13', '61', '47', '75', '24', '66', 'f9', '71', '1f', 'cd', 'e5', 'b3', '41', '5d', '13', '33', '4e', '72', '0e', '08', 'fb', '76', '87', 'e6', '1d', '8f', '93', '18', '32', 'e7', '06', '92', '6a', '58', 'f0', '77', '22', '09', 'ba', 'ca', '25', 'b3', '8e', '7b', '52', '98', 'c5', '54', '9a', '5f', '8c', '34', '9e', '35', 'f5', '6b', '75', '45', 'c7', '7a', '10', '8a', '5f', '6e', '0d', 'e6', '4a', '1e', '90', '92', 'ba', '1c', 'd1', '96', 'b0', 'c1', '19', 'cd', '5c', '0d', '27', '9b', '19', '2f', '58', '6f', '49', '14', '95', '0d', 'f1', '3a', 'c8', '99', '82', '2e', 'a3', 'ad', '36', '9e', 'b7', '13', '28', 'aa', '9b', '89', 'b5', '30', 'fc', '3f', 'd4', 'd2', '45', 'be', 'c4', '7f', '86', '87', '71', '25', '09', 'd1', 'ed', 'b3', 'd3', '92', '69', 'df', 'b5', '94', '72', 'a6', '37', '58', '58', 'c4', 'd4', '29', 'd1', 'ba', 'af', '84', '4a', '2e', 'cf', '2e', '7b', 'fb', 'bd', '91', 'ac', '99', 'ba', 'a8', 'cc', 'c0', '95', '5b', '21', 'e4', '3d', '58', 'fa', '8f', 'c4', '21', 'c7', '66', 'c5', '7b', 'a7', '31', '9f', '70', '2d', '1e', 'ce', '37', '8a', '13', 'e1', 'e8', '1e', '88', '67', '11', '7c', '3e', '7d', '75', '52', 'bd', '9a', '40', 'd7', 'af', '3d', 'a1', '10', '3a', 'eb', '91', 'c8', '8d', '4a', '24', '9b', '38', '85', '8f', '38', 'b5', '3c', 'b5', 'a3', 'fa', '1b', 'be', '4a', 'ca', '93', 'd7', '41', '69', '02', '0d', 'ad', '30', '6d', 'ba', '08', '54', 'fc', '13', 'e8', 'fa', 'eb', 'c0', 'fd', 'e8', 'ad', '51', '1a', '4a', '89', '95', '3a', '27', 'd4', 'f2', 'cc', '40', '46', 'cd', 'c9', '8a', '14', 'd5', '83', 'df', '60', 'dc', 'ce', '06', '5e', '9e', '2e', 'b1', 'd3', '54', '97', 'f7', '7b', 'ae', '6f', '51', '4f', '74', 'dc', '57', '6a', 'd4', '7f', '37', '2a', '49', 'ba', '86', '2a'] #xml code which should be placed before and after the lua code xmlCodeBefore = '000-1' xmlCodeAfter = '' convertedLua = '' for inputFileName in inputFileNames: inputFile = open(inputFileName, 'rb') #encoding special chars of each line in the lua code for line in inputFile: conv = line.replace('&', '&') conv = conv.replace('"', '"') conv = conv.replace('\'', ''') conv = conv.replace('<', '<') conv = conv.replace('>', '>') convertedLua += conv inputFile.close() xmlCode = xmlCodeBefore + convertedLua + xmlCodeAfter #compressing the generated xml code to temp.zip tempZip = zipfile.ZipFile('./temp.zip', 'w', zipfile.ZIP_DEFLATED) tempZip.writestr('Problem1.xml', xmlCode) tempZip.close() outputFile = open(outputFileName, 'wb') #writing blank tns file for s in blankTnsHexValues: outputFile.write(chr(eval('0x' + s))) #appending created zip file zipFile = open('./temp.zip', 'rb') outputFile.write(zipFile.read()) zipFile.close() outputFile.close() #deleting temp.zip os.remove('./temp.zip')