#!/usr/bin/env python# -*- coding: utf-8 -*-import osfrom multiprocessing import Poolclass CopyFile(): """ 實現多線程拷貝文件 一、獲取要拷貝文件夾路徑、名稱,獲取要拷貝文件的名稱 二、複製原文件內容到新文件中 """ # 一、獲取要拷貝文件夾路徑 # 二、獲取要拷貝文件夾名稱 # 三、獲取要拷貝文件夾內文件名稱列表 # 四、建立新文件夾 # 五、打開要拷貝的原文件 # 六、讀取要拷貝的原文件內容 # 七、打開新文件 # 八、寫入新文件內容 # 九、關閉原文件 # 十、關閉新文件 def copyFile(self,path,oldFolderName): print(oldFolderName) newFolderName = oldFolderName+"[複製]" print(newFolderName) if not os.path.exists(newFolderName): os.makedirs(newFolderName) print("文件夾建立成果") oldFileNameList = os.listdir(oldFolderName) print(oldFileNameList) pool = Pool(5) for file in oldFileNameList: self.copyFileExcut(path,oldFolderName,newFolderName,file) pool.close()#關閉進程池,再也不接受新的進程 pool.join()#主進程阻塞等待子進程的退出 ## 讀寫文件 def copyFileExcut(self,path,oldFolderName,newFolderName,fileName): try: oldF = open(path+u"\\"+oldFolderName+u"\\"+fileName, 'r',encoding='UTF-8') copyContent = oldF.read() print(copyContent) finally: if oldF: oldF.close() try: newF = open(path+"\\"+newFolderName+"\\"+fileName, 'w') newF.write(copyContent) finally: if newF: newF.close()if __name__ == '__main__': path = os.getcwd() print(path) cpf = CopyFile() cpf.copyFile(path,"test")