1 # -*- coding:utf-8 -*- 2 # Author:Sure Feng 3 4 import os 5 import multiprocessing 6 import time 7 8 def copy_dir(src_dir, file, dest_dir, queue): 9 """文件夹复制""" 10 # 打开文件 11 src_file = open((src_dir + "/" + file), "rb") 12 dest_file = open(dest_dir + "/" + file, "wb") 13 # 读写文件 14 data = src_file.read() 15 dest_file.write(data) 16 # 传递进度 17 queue.put(1) 18 # 关闭文件 19 src_file.close() 20 dest_file.close() 21 22 if __name__ == '__main__': 23 # 获取源文件夹名 24 src_dir = input("请输入源文件夹名称:") 25 # 获取源文件夹内的文件列表名 26 file_list = os.listdir(src_dir) 27 # 获取目标文件夹 28 dest_dir = src_dir + "_备份" 29 os.mkdir(dest_dir) 30 # 创建队列,显示进度 31 queue = multiprocessing.Queue() 32 33 # 创建多进程,完成文件复制 34 for file in file_list: 35 pro = multiprocessing.Process(target=copy_dir, args=(src_dir, file, dest_dir, queue)) 36 pro.start() 37 38 complish_len = 0 39 while True: 40 if complish_len == len(file_list): 41 break 42 complish_len += queue.get() 43 time.sleep(0.4) 44 45 print(" 当前进度已完成 %.2f %%" % (complish_len/len(file_list) * 100), end="")