配置文件的自动化更新(v1.0)

 1 # 导入openpyxl和configparser模块
 2 import openpyxl
 3 from configparser import ConfigParser
 4 import os
 5 
 6 wb = openpyxl.load_workbook("SW知能化-Utility.xlsx")                             # 打开excel文件,获取工作簿对象
 7 
 8 ws = wb["Utility機種対応"]                                                       # 获取指定的表单(sheet)对象
 9 
10 language_code = ['CHS', 'CHT', 'DEU', 'ENU', 'ESP', 'FRA', 'ITA', 'JPN', 'KOR', 'PTB']
11 language_coding = {'CAT': 'windows-1252', 'CHS': 'ISO-8859-1', 'CHT': 'ISO-8859-1', 'CSY': 'Windows-1250', 'DAN': 'Windows-1252',
12                    'DEU': 'Windows-1252', 'ELL': 'Windows-1253', 'ENU': 'Windows-1252', 'ESP': 'Windows-1252',
13                    'FIN': 'Windows-1252', 'FRA': 'Windows-1252', 'HUN': 'Windows-1250', 'ITA': 'Windows-1252',
14                    'JPN': 'shift_jis', 'KOR': 'ks_c_5601-1987', 'NLD': 'Windows-1252', 'NOR': 'Windows-1252',
15                    'PLK': 'Windows-1250', 'PTB': 'Windows-1252', 'PTG': 'Windows-1252', 'RUS': 'Windows-1251',
16                    'SVE': 'Windows-1252', 'TRK': 'Windows-1254'}
17 
18 path = ws['F4'].value                                                            # 获取F列单元格内容(目标配置文件路径)
19 path_list_dic = {}
20 path_list = []
21 
22 if '...' in path:
23     path = path.replace('...\\', 'E:\Projects\\work_1016-1031\CCU_ALL\\')
24 
25 for lan in language_code:
26     path_list_dic[lan] = path.replace('ENU', lan)
27     path_list.append(path.replace('ENU', lan))
28 
29     if lan == 'JPN':
30         J8 = ws['J8'].value.replace(ws['J8'].value[-5], 'j')
31         J9 = ws['J9'].value.replace(ws['J9'].value[-5], 'j')
32         J10 = ws['J10'].value.replace(ws['J10'].value[-5], 'j')
33     elif lan == 'PTB':
34         J8 = ws['J8'].value.replace(ws['J8'].value[-5], 'por')
35         J9 = ws['J9'].value.replace(ws['J9'].value[-5], 'por')
36         J10 = ws['J10'].value.replace(ws['J10'].value[-5], 'por')
37     else:
38         J8 = ws['J8'].value.replace(ws['J8'].value[-5], lan.lower())
39         J9 = ws['J9'].value.replace(ws['J9'].value[-5], lan.lower())
40         J10 = ws['J10'].value.replace(ws['J10'].value[-5], lan.lower())
41 # print(path_list_dic)
42 # print(path_list)
43 
44 
45 def add():
46     for new_path in path_list_dic:
47         # print(new_path)
48         # print(path_list_dic[new_path])
49         # print(language_coding[new_path])
50         with open(path_list_dic[new_path], 'r', encoding=language_coding[new_path]) as f1:
51             new_section = ws['H4'].value                    # 获取H列单元格内容"section"
52             lst = f1.readlines()                            # 读取每行信息
53 #
54             n = lst.index('[StringSet1]\n')                 # 获取"[StringSet1]"的索引
55             lst.insert(n, new_section + '\n')                      # 将新section按照索引值插入列表中
56             for i in range(4, 11):
57                 n = n + 1
58                 item = ws['I' + str(i)].value               # 获取item值
59                 value = str(ws['J' + str(i)].value)         # 获取value值
60                 # if i == 7:
61                 #     value = value + "\n"
62                 if i == 8:
63                     value = J8
64                 elif i == 9:
65                     value = J9
66                 elif i == 10:
67                     value = J10 + "\n"
68                 lst.insert(n, item + " = " + value + '\n')         # 将item值与value值按照索引插入列表中
69             # print(lst)
70         with open(path_list_dic[new_path], 'w', encoding=language_coding[new_path]) as f2:
71             f2.writelines(lst)
72 
73 
74 # 获取G列单元格内容,并根据不同值,进行不同函数操作
75 change_type_value = ws['G4'].value
76 
77 if change_type_value == 'Add':
78     # cfg.write(open(path, 'a'))
79     add()
80 # elif change_type_value == 'Edit':
81 #     pass
82 # elif change_type_value == 'Delete':
83 #     pass
84 # else:
85 #     pass

猜你喜欢

转载自www.cnblogs.com/wangzhilong/p/11697721.html