python版本:2.7
#coding=utf-8
from multiprocessing import Pool,Manager
import os
import shutil
def copy_floder(queue,current_road,name,oldFloderName,newFloderName):
fr = open(current_road+'/'+oldFloderName+'/'+name)
fw = open(current_road+'/'+newFloderName+'/'+name,'w')
context = fr.read()
fw.write(context)
fr.close()
fw.close()
queue.put(name)
def generate_pool(queue,current_road,fileNames,oldFloderName,newFloderName):
pool = Pool(3)
for name in fileNames:
pool.apply_async(copy_floder,args=(queue,current_road,name,oldFloderName,newFloderName))
pool.close()
pool.join()
def compute_copyRate(fileNames,queue):
num = 0
allNum = len(fileNames)
while num < allNum:
queue.get()
num += 1
copyRate = num / allNum
print "\rcopy的进度是:%.2f%%"%(copyRate*100),
def main():
oldFloderName = raw_input("输入文件名:")
newFloderName = oldFloderName + '副本'
current_road = os.getcwd()
all_file = os.listdir(current_road)
if oldFloderName in all_file:
fileNames = os.listdir(oldFloderName)
if newFloderName in all_file:
shutil.rmtree(newFloderName)
os.mkdir(newFloderName)
else:
os.mkdir(newFloderName)
queue = Manager().Queue()
generate_pool(queue,current_road,fileNames,oldFloderName,newFloderName)
compute_copyRate(fileNames,queue)
else:
print('该文件不存在,请重试!')
main()
if __name__ == '__main__':
main()