背景介紹
有些場景下需要將系統的所有源碼拷貝在一起,比如:申請軟件著作權時需要提供源碼,一個一個java文件copy就太慢了。
解決方案
利用python腳本讀取並寫入到txt
然后將txt復制到word即可
說明:
txt文件名默認為目錄名,也是java項目工程名稱
代碼:
# coding=utf-8 import os # import docx class getCode: list_name = [] # 查找path下所有java文件,reture list @classmethod def get_jsonfile(cls, path, file_list): dir_list = os.listdir(path) for x in dir_list: new_x = os.path.join(path, x) if os.path.isdir(new_x): cls.get_jsonfile(new_x, file_list) else: file_tuple = os.path.splitext(new_x) if file_tuple[1] == '.java': file_list.append(new_x) return file_list @classmethod def write_txt(cls, write_path): if not os.path.exists(write_path): os.makedirs(write_path) # 循環讀取文件路徑 for i in cls.list_name: for k,v in i.items(): file_list = [] cls.get_jsonfile(v, file_list) # 保存到文件 with open(f'{write_path}\\{k}.txt', "w", encoding='UTF-8') as write_file: for json_file in file_list: with open(json_file, "r", encoding='UTF-8')as read_file: write_file.write(read_file.read()) @classmethod def getListDir(cls, read_path, write_path): # 查找 path下所有文件或目錄名稱到list dirs = os.listdir(read_path) for dir in dirs: # 拼接路徑,獲取文件路徑 path_1 = os.path.join(os.path.abspath(read_path), dir) cls.list_name.append({dir:path_1}) cls.write_txt(write_path) @classmethod def start(cls, read_path, write_path): cls.getListDir(read_path, write_path) if __name__ == '__main__': # 源代碼路徑 read_path = 'C:\\Users\\qaq\Desktop\\aaa' # 讀取后txt的保存路徑 write_path = 'C:\\Users\\qaq\Desktop\\bbb' getCode.start(read_path,write_path)