import os
from multiprocessing import Pool,Queue
#copy文件
def copyFile(name,oldFileName,newFileName,queue):
fr = open(oldFileName+ "/"+name)
fw = open(newFileName+ "/"+name,"w")
cen = fr.read()
fw.write(cen)
fr.close()
fw.close()
queue.put(name) #队列中添加内容
def main():
#获取文件名
oldFileName = input("请输入文件名:")
#创建新的文件夹
newFileName = oldFileName + "-附件"
os.mkdir(newFileName)
#获取所有文件名字
fileNames = os.listdir(oldFileName)
pool = Pool(3) #创建进程池,3个子进程
queue = Queue() #创建队列,括号可指定接收多少个消息
for name in fileNames:
pool.apply_async(copyFile,args=(name,oldFileName,newFileName))
#pool.close()
#pool.join()
#打印进度
num = 0
allnum = len(fileNames)
while True:
queue.get()
num += 1
copyRate = num/allnum
print("\rcopy的进度是:%.2f%%"%(copyRate*100),end="")
if num == allnum:
break
if __name__ == '__main__':
main()