|
- from multiprocessing import Pool,Manager
- import os
-
- def copyFileTask(name,oldFileName,newFilename,queue):
- #print(name)
- fr=open(oldFileName+"\"+name,"r")
- fw =open(newFilename+"\"+name, "w")
- fileData=fr.read()
- fw.write(fileData)
- fr.close()
- fw.close()
- queue.put(name)
-
-
- def main():
- #0获取文件夹名字
- oldName=input("请输入文件夹名字:")
- #1创建一个空文件夹
- newName=oldName+"--备份"
- os.mkdir(newName)
-
- #2获取old文件夹所有的文件名
- fileNames=os.listdir(oldName)
-
- #3多进程的方式copy文件
- pool=Pool(5)
- queue=Manager().Queue() #进程池里用消息队列需要用Manager类
- i = 0
- for name in fileNames:
- pool.apply_async(copyFileTask,args=(name,oldName,newName,queue))
- i+=1
-
- #4获取备份情况
- while True:
- getName=queue.get()
- if getName !="":
- print("正在备份-->%s"%getName)
- i-=1
- if i==0:
- break
- pool.close()
- pool.join()
- print("备份完毕")
-
-
- if __name__=="__main__":
- main()
复制代码
|
|