# @Time : 2022/11/10 10:40
# @Author : 阿紫
# @File : 多进程复制文件.py
# @Description :
import multiprocessing
import osdef copy_file(old_folder_name,file_name,new_folder_name,queue):"""复制文件"""# 旧文件地址old_path = open(old_folder_name + "/" + file_name, "rb")# 新文件地址new_path = open(new_folder_name + "/" + file_name, "wb")while True:content = old_path.read(1024)if content:new_path.write(content)else:breakold_path.close()new_path.close()queue.put(file_name)def main():# 获取旧文件的名字old_folder_name = input("请输入待复制的文件名字:")# 创建新文件try:new_floder_name = old_folder_name+"[附件]"os.mkdir(new_floder_name)except:print("请重新输入文件名字!")# 获取文件中所有目标文件files = os.listdir(old_folder_name)# print(files)# 创建队列queue = multiprocessing.Manager().Queue()# 创建进程池po = multiprocessing.Pool(3)# 向进程池中添加目标文件for file in files:po.apply_async(copy_file,(old_folder_name,file,new_floder_name,queue))po.close()# po.join()files_num = len(files)num = 0while True:file_name = queue.get()num += 1print("\r拷贝进度为:%.2f%%" % (num * 100 / files_num),end="")if num >= files_num:breakif __name__ == "__main__":main()