multiprocessing 多線程拷貝文件

#!/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")
相關文章
相關標籤/搜索