def batchAddContext(inputPath, extension, encoding, outputPath, filePathToContextFunc): for p in getFilePaths(inputPath, extension=extension): addContext(inputPath=p, outputPath=outputPath.joinpath(p.relative_to(inputPath)), encoding=encoding, context=filePathToContextFunc(p))
def batchValidateFilesEncoding(inputEncoding=None, pathObj=Path('.'), extension='txt', outputEncoding=None): for p in getFilePaths(pathObj, extension=extension): print(p) validateFileEncoding(p, inputEncoding, outputEncoding)
def batchConvertLf(inputPath, outputPath, SlashNTolf=True, extension='txt', encoding='UTF-8'): for p in getFilePaths(inputPath, extension=extension): convertLf(p, outputPath.joinpath(p.relative_to(inputPath)), encoding, SlashNTolf)
def copyFonts(d, pTemp, mmVersion, pNameCondensed): if mmVersion == '6': targetLod = 'icons' elif mmVersion == '7': targetLod = 'events' else: # 8 or merge targetLod = 'EnglishT' for fnt in getFilePaths(Path('non_text/font/' + d), 'fnt', False): shutil.copy(fnt, pTemp.joinpath('Data/10 Loc' + pNameCondensed + '.' + targetLod))
def encodeDbcsSpecialFile(inputPath, outputPath, encoding): for p in getFilePaths(inputPath, ['txt', 'str', 'ini']): f = p.open(mode='rb') content = f.read() f.close() pout = outputPath.joinpath(p.relative_to(inputPath)) pout.parent.mkdir(parents=True, exist_ok=True) fout = pout.open(mode='wb') fout.write(encodeDbcsSpecial(content, encoding)) fout.close()
def decodeDbcsSpecialFile(inputPath, outputPath): inputPathTemp = Path(inputPath) outputPathTemp = Path(outputPath) for p in getFilePaths(inputPathTemp, ['txt', 'str', 'ini']): f = p.open(mode='rb') content = f.read() f.close() pout = outputPathTemp.joinpath(p.relative_to(inputPathTemp)) pout.parent.mkdir(parents=True, exist_ok=True) fout = pout.open(mode='wb') fout.write(decodeDbcsSpecial(content)) fout.close()
def batchAddTransTemplate(inputPath, outputPath, extList='txt', skipRowDict={}): # extList can be one string or a list of strings filePathList = getFilePaths(inputPath, extList) # skipRowDict is a dictionary that contains # {file name : number of row to skip} pair # (if number of row to skip is 1, you don't need to specify here) skipRowFileNmeList = list(skipRowDict.keys()) for filePath in filePathList: fileName = str(filePath) if fileName in skipRowFileNmeList: skipRow = skipRowDict[fileName] else: skipRow = 1 addTransTemplate(filePath, skipRow, inputPath, outputPath)
def testStrLineLengthInByte(inputPath, extension, maxLength, newline='\n', encoding='UTF-8', encodingErrors="strict"): for p in getFilePaths(inputPath, extension): f = p.open(mode='r', encoding=encoding, newline=newline, errors=encodingErrors) for n, line in enumerate(f): lineLen = len(line.encode(encoding)) if lineLen > maxLength: print('Length of line ' + str(n + 1) + ' in file ' + str(p) + ' is ' + str(lineLen) + ' and more than ' + str(maxLength))
def batchCheckLf(encoding=None, pathObj=Path('.'), extension='txt'): for p in getFilePaths(pathObj, extension=extension): checkLf(p, encoding)
def copyFonts(d, pTemp, mmVersion, pNameCondensed): if mmVersion == '6': targetLod = 'icons' elif mmVersion == '7': targetLod = 'events' else: # 8 or merge targetLod = 'EnglishT' for fnt in getFilePaths(Path('non_text/font/' + d), 'fnt', False): shutil.copy(fnt, pTemp.joinpath('Data/10 Loc' + pNameCondensed + '.' + targetLod)) if Path('5_postprod').exists(): shutil.rmtree('5_postprod') for p in getFilePaths(Path('4_prod'), '', True): if p.name == 'nonprod' and p.exists(): shutil.rmtree(p) for p in getFilePaths(Path('4_prod'), '', False): if p.name in dbcsLangs: encodeDbcsSpecialFile(p, Path('5_postprod').joinpath(p.name), langEncDict[p.name]) else: shutil.copytree(p, Path('5_postprod').joinpath(p.name)) # os.system('tools\\mmarch k non_text\scripts_datatables\mmmerge_rodril non_text\scripts_datatables\mmmerge filesonly non_text\scripts_datatables\difftemp') # scriptDiffPath = Path('non_text/scripts_datatables/difftemp') for p in getFilePaths(Path('5_postprod'), '', False): pTemp = p.joinpath('mm6/data/10LocLANG.icons') pNameCondensed = p.name.upper().replace('_', '') # e.g. ZHCN