import os import io import re import shutil source_path = os.path.abspath(r'./src/pb/proto') target_path = os.path.abspath(r'./src/pb/temop') if not os.path.exists(target_path): os.makedirs(target_path) if os.path.exists(source_path): # root 所指的是当前正在遍历的这个文件夹的本身的地址 # dirs 是一个 list,内容是该文件夹中所有的目录的名字(不包括子目录) # files 同样是 list, 内容是该文件夹中所有的文件(不包括子目录) for root, dirs, files in os.walk(source_path): if not "google" in root: relative_path = root.split(source_path)[-1].strip("/") if len(relative_path) == 0: for file in files: folder = os.path.splitext(file)[1] if folder == ".proto": src_file = os.path.join(root, file) shutil.copy(src_file, target_path) else: for file in files: folder = os.path.splitext(file)[1] if folder == ".proto": src_file = os.path.join(root, file) out_file = os.path.join(target_path, file) file_data = "" print(src_file) with io.open(src_file, "r", encoding='utf-8') as f: for line in f: if 'import' in line: cite = re.findall(r"\"(.+?)\"",line)[0] cpaths = cite.split("/") if len(cpaths) == 2: line = re.sub( cite, cpaths[1], line) print(line) file_data += line with io.open(out_file, "w", encoding='utf-8') as f: f.write(file_data) cmdstr = 'npx pbjs -t json-module -w commonjs -o ./src/pb/proto.js ./src/pb/temop/*.proto' print(cmdstr) os.system(cmdstr) print('copy files finished!')