import os
import time
import multiprocessing
def file_copy(q, old_folder_name, new_folder_name, file_name):
"""-----完成复制------"""
# print("---从%s---->%s中,复制的文件是%s" % (old_folder_name,new_folder_name,file_name))
old_f = open(old_folder_name + "/" + file_name,"rb")
content = old_f.read()
old_f.close()
new_f = open(new_folder_name + "/" + file_name,"wb")
new_f.write(content)
new_f.close()
q.put(file_name)
def main():
# 1.获取用户要copy的文件夹的名字
old_folder_name = input("请输入要copy的文件夹的文字:")
# 2.创建一个新的文件夹
new_folder_name = old_folder_name + "[复件]"
try:
os.mkdir(new_folder_name)
except:
pass
# 3.获取文件夹中都有待copy的文件名字
file_names = os.listdir(old_folder_name)
# print(file_names)
# 5. 创建一个队列 使用multiprocessing.Manger().Queue()创建
q = multiprocessing.Manager().Queue()
# 4.创建进程池
po = multiprocessing.Pool(5)
for file_name in file_names:
po.apply_async(file_copy,args=(q, old_folder_name, new_folder_name, file_name))
po.close()
# 测试一下要复制的文件个数
file_names_nun = len(file_names)
copy_ok = 0
while True:
file_data =q.get()
copy_ok +=1
print("\r--已完成复制%.2f %%" % (copy_ok*100/file_names_nun),end="")
time.sleep(0.05)
if file_names_nun <= copy_ok:
break
print()
if __name__ == "__main__":
main()
02-6案例多任务copy文件带完成率
最新推荐文章于 2020-04-13 21:30:14 发布