分片匹配模式,並按格式寫檔案內容
阿新 • • 發佈:2022-04-11
# -*- coding: utf-8 -*- """ 1、解析封裝函式的模式 2、根據common檔案匹配def和api 3、把匹配的內容按格式填充到hub_api3檔案中 """ import os import re # 記錄任務個數 SuccCount = 0 FailCount = 0 content = """ @pin_action( "qctest/iotcloud/apiv3_monitor/topic_test/topic_test_common.py", "create_topic_policy", "CreateTopicPolicy", ) def create_topic_policy(self, *args, **argv): \""" action: CreateTopicPolicy \""" return topic_test_common.create_topic_policy(*args, **argv) """ def write_format_content(file_name, def_name, api_name): format_string = """ @pin_action( "qctest/iotcloud/api_test/%s", "%s", "%s", ) def %s(self, *args, **argv): \""" action: %s \""" return topic_test_common.%s(*args, **argv) """ % (file_name, def_name, api_name, def_name, api_name, def_name) return format_string def write_format_lib(dir_path): print(len(dir_path)) for fl in dir_path: #print(fl) dir_path = re.findall(r'api_test/(.*?).py', fl)[0] + '.py' #print(type(dir_path)) path = re.findall(r'(.*?)/', dir_path)[0] #print(path) file_name = re.findall(r'/(.*?).py', dir_path)[0] #print(file_name) format_string = """ from qctest.iotcloud.api_test.%s import %s """ % (path, file_name) print(format_string) # with open('imoprt_lib.py', 'w') as f: # f.write(format_string) # f.write('\n') # print(format_string) def file_path_dir(path): g = os.walk(path) file_path_list = [] for path, dir_list, file_list in g: for file_name in file_list: file_path = os.path.join(path, file_name) #print(file_path) if file_path.endswith('_common.py'): file_path_list.append(file_path) #print(file_path) return file_path_list def str2Hump(text): #arr = filter(None, text.lower().split('_')) arr = text.lower().split('_') #print(arr) res = '' j = 0 for i in arr: if j == 0: res = i[0].upper() + i[1:] else: res = res + i[0].upper() + i[1:] j += 1 return res if __name__ == '__main__': # 讀取common檔案 dir_path = '/Users/mecexia/PycharmProjects/workspace/gitcode/IotTest/qctest/iotcloud/api_test' file_path_list = file_path_dir(dir_path) #write_format_lib(file_path_list) save_name = 'hub.py' with open(save_name, 'w') as f: for file_path in file_path_list: print(file_path) with open(file_path, 'r') as fs: common_content = fs.read() content_list = common_content.split('return rsp') #print(content_list) file_name = re.findall(r'api_test/(.*?).py', file_path)[0] + '.py' #print(file_name) api_name = [] def_name = [] for content in content_list: def_name_list = re.findall(r'def (.*?)\(', content) api_name_1 = re.findall(r"request\('(.*?)'", content) api_name_2 = re.findall(r'request\("(.*?)"', content) api_name_3 = re.findall(r'action = "(.*?)"', content) api_name_list = api_name_1 or api_name_2 or api_name_3 if api_name_list: # def_name.append(def_name_list[0]) def_name.extend(def_name_list) # api_name.append(api_name_list[0]) api_name.extend(api_name_list) for i in range(0, len(def_name)): try: format_string = write_format_content(file_name, def_name[i], api_name[i]) print("match success", def_name[i], api_name[i]) f.write(format_string) f.write('\n') SuccCount += 1 except: print("第{0}條資料處理失敗".format(def_name[i])) print("第{0}條資料處理失敗".format(api_name[i])) FailCount += 1 print("SuccCount", SuccCount) print("FailCount", FailCount)