# 1.获取要copy的文件夹的姓名
# 2.创建一个文件夹
# 3.获取old文件夹中的所有的文件名字
# 4.使用多进程的方式copy原文件夹中的所有文件到新文件夹中
# 导入需要的模块
from multiprocessing import Pool, Manager
import os
def copyFileTask(name, oldFolderName, NewFolderName, queue):
# 完成copy一个文件的功能
fr = open(oldFolderName + '/' + name)
fw = open(NewFolderName + '/' + name, 'w')
content = fr.read()
fw.write(content)
fr.close()
fw.close()
queue.put(name)
def main():
# 获取要copy的文件夹名字1
oldFolderName = input("请输入文件夹的名字:")
# 创建一个文件夹
newFolderName = oldFolderName + '-复件'
os.mkdir(newFolderName)
# 获取old文件夹中所有的文件名字
fileNames = os.listdir(oldFolderName)
# 使用多进程的方式copy原文件夹中的所有文件到文件夹中
pool = Pool(5)
queue = Manager().Queue()
for name in fileNames:
pool.apply_async(copyFileTask, args=(name, oldFolderName, newFolderName, queue))
num = 0
allNum = len(fileNames)
while True:
queue.get()
num += 1
copyRate = num/allNum
print('copy的进度为:%.2f%%' %(copyRate*100), end='')
if num == allNum:
print('复制完成')
break
if __name__=='__main__':
main()