pythonテーブルを読み込んで対応ファイルを生成

2289 ワード

# coding=utf-8
import os
import sys
import xlrd
import codecs
import collections
import json
import io

# 
def genLangJson (fileName, nameIdx, idx):
    data = xlrd.open_workbook(fileName)
    table = data.sheets()[0]
    rowNum = table.nrows                  #   
    colNum = table.ncols                  #   

    if colNum <= idx:
        return False
    
    lang = ''                                       #       0   
    data = {}
    for lineIdx in range(rowNum):
        name  = table.cell(lineIdx,nameIdx).value   # N    key  
        value = table.cell(lineIdx,idx).value       # N         
        if not name.strip():
            #       token     
            continue

        if not value.strip():
            #     
            print("For " + lang + "in line " + str(lineIdx+1) + "miss")
            continue

        if lineIdx == 0:
            #   
            lang = value                     #     en_us es_es
        else:
            # print("%s" % (value) )
            data[name] = value

    lang = lang#.encode("utf-8")
    print("lang:%s" % lang)

    #     ,   
    curPath  = os.path.dirname(os.path.abspath(__file__))
    jsonPath = os.path.join(curPath, "res", "lang1", lang, "text.txt")
    # jsonPath = curPath + "\\" + lang + "\\text.txt"
    
    #      
    dirname = os.path.dirname(jsonPath)
    if not os.path.exists(dirname):
        os.makedirs(dirname)

    with io.open(jsonPath, 'w', encoding='utf-8') as f:
        f.write(json.dumps(data, ensure_ascii=False, indent=4, sort_keys=True))

    return True

#   json    
def makeJsonFile(fileName, tokenIdx, startIdx):
    idx = startIdx
    while (1):
        bret = genLangJson(fileName, tokenIdx, idx)      #     ,     
        if (bret == False):
            break
        idx += 1

if __name__ == '__main__':

    #     excel  - 
    curPath = os.path.dirname(os.path.abspath(__file__))
    xlsFile = curPath + '\\lang.xlsx'

    print("xlsx file:%s" % xlsFile)

    #     ( 0  )
    tokenIdx = 0  # Token       key  
    startIdx = 1  #      
    # fntIdx = 3    #    ttf_xx

    makeJsonFile(xlsFile, tokenIdx, startIdx)