文件夹copy器 (用进程池实现)
2020-02-03 04:59
585 查看
代码实现
#!/usr/bin/env python # -*- coding:utf-8 -*- import multiprocessing import os, time, random def copy_file(q, file_name, old_folder_name, new_folder_name): """完成copy任务""" # print("从 %s ---》 %s ,文件名为: %s" % (old_folder_name, new_folder_name, file_name)) old_f = open(old_folder_name + "/" + file_name,"rb") file_r = old_f.read() old_f.close() new_f = open(new_folder_name + "/" + file_name,"wb") new_f.write(file_r) new_f.close() # 若拷贝完成,则将它放入队列 q.put(file_name) def main(): # 获取要copy的文件的名字 old_folder_name = input("请输入要copy的文件:") # 创建一个新的文件夹 try: new_folder_name = old_folder_name + "附件" os.mkdir(new_folder_name) except: pass # 获取文件夹中所有待copy的文件的名字 listdir file_names = os.listdir(old_folder_name) # for i in file_names: # print("已经查找到 %s" % (i)) # 创建进程池 po1 = multiprocessing.Pool(5) # 创建一个队列 q = multiprocessing.Manager().Queue() # 向进程池中添加copy任务 for file_name in file_names: po1.apply_async(copy_file, args=(q, file_name, old_folder_name, new_folder_name)) # copy文件 po1.close() # po1.join() all_file_number = len(file_names) copy_ok = 0 while True: file_name = q.get() # print("已经完成拷贝 %s ." % (file_name)) copy_ok += 1 print("\r copy 的进度为 %.2f %%" % ((copy_ok/all_file_number)*100), end="") if copy_ok >= all_file_number: break if __name__ == '__main__': main()
未完待续。。。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- python进程池实现的多进程文件夹copy器完整示例
- 多任务文件夹copy器(进程池)
- 实现整个文件夹及单个文件的拷贝
- Python 实现隐藏文件夹、文件操作
- C#实现对指定文件夹中文件按修改时间排序
- asp.net 跑马灯 怎样从文件夹里读取图片,怎样实现?
- 实现浏览文件夹功能
- activexObject实现文件夹选择 有局限性
- [安卓源代码]简单实现SD卡上遍历所有文件夹寻找指定格式文件
- java实现文件夹(包括其中的子文件夹、子文件)的复制——递归
- CFileFind实现遍历文件夹,获得文件夹下子文件个数,亲测通过
- Ubuntu下配置samba实现文件夹共享
- 编辑注册表实现彻底禁用本机文件夹或文件EFS加密
- 在MVC3中修改KindEditor实现上传图片到指定文件夹
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- linux下C语言实现cp命令复制文件与文件夹
- 利用File以及IO流来实现复值文件夹
- Python3之concurrent.futures实现线程池,进程池
- C++/CLI/VC.NET 实现OpenFileDialog的定制,使他可以选择文件夹
- Linux利用inotify-tools的inotifywait实现:当文件夹内容改变时自动执行一段脚本