1 #!/usr/bin/python3 2 # 文件名:ProjectTransfer.py 3 4 import os 5 class ProjectTransfer: 6 def __init__(self, txtFilePath=‘D:/src.txt‘, srcPath=‘D:/mhi‘, srcPathTo=‘D:/mhi2‘, contentTypes=(‘.java‘,‘.xml‘,‘.jsp‘,‘.properties‘), nameTypes=(‘.js‘,‘.css‘)): 7 self.txtFilePath = txtFilePath 8 self.srcPath = srcPath 9 self.contentTypes = contentTypes 10 self.nameTypes = nameTypes 11 self.srcPathTo = srcPathTo 12 13 def file2Txt(self, filePath, txtf): 14 files = os.listdir(filePath) 15 for f in files: 16 cf = filePath + ‘/‘ + f 17 if not os.path.isdir(cf): 18 if os.path.splitext(f)[1] in self.contentTypes: 19 txtf.write(‘#BeginFile:‘ + f + ‘\n‘) 20 txtf.write(‘#FilePath:‘ + cf + ‘\n‘) 21 with open(cf, encoding=‘utf-8‘) as inputf: 22 txtf.writelines(iter(inputf)) 23 txtf.write(‘\n#EndFile:‘ + f + ‘\n‘) 24 elif os.path.splitext(f)[1] in self.nameTypes : 25 txtf.write(‘#BeginFile:‘ + f + ‘\n‘) 26 txtf.write(‘#FilePath:‘ + cf + ‘\n‘) 27 txtf.write(‘#EndFile:‘ + f + ‘\n‘) 28 else: 29 self.file2Txt(cf, txtf) 30 31 def txt2File(self): 32 f = None 33 with open(self.txtFilePath, ‘r‘, encoding=‘utf-8‘) as txtf: 34 for line in txtf: 35 if line.startswith(‘#BeginFile:‘): 36 pass 37 elif line.startswith(‘#FilePath:‘): 38 filePath = line[10:].replace(self.srcPath, self.srcPathTo)[:-1] 39 if(f and not f.closed): 40 f.close() 41 dirname=os.path.dirname(filePath) 42 if not os.path.exists(dirname): 43 os.makedirs(dirname) 44 f = open(filePath, ‘w‘, encoding=‘utf-8‘) 45 elif line.startswith(‘#EndFile:‘): 46 f.close() 47 else: 48 f.write(line) 49 50 51 trans = ProjectTransfer() 52 if os.path.exists(trans.txtFilePath): 53 os.remove(trans.txtFilePath) 54 with open(trans.txtFilePath, ‘a‘, encoding=‘utf-8‘) as txtf: 55 trans.file2Txt(trans.srcPath, txtf) 56 57 trans.txt2File()