import os
import multiprocessing# 程序的读和写没什么难的,不会写了就上网查  最主要的是解决问题的思路
# 找到对应文件里的文件,然后读过来,其次找到要复制目的的文件夹,然后把刚才读进来的
# 文件写到这个文件夹里面就好了
def copy_file(file_name, old_folder_name, new_folder_name):"""完成文件的复制"""print("======>模拟copy文件:从%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()def main():# 1. 获取用户要copy的文件夹的名字old_folder_name = input("请输入要copy的文件夹的名字:")# 2. 创建一个新的文件夹  不存在就创建这个文件夹,如果存在就不创建了保证会有这个文件夹try:new_folder_name = old_folder_name + "[复件]"os.mkdir(new_folder_name) # 创建新的文件夹名子except:pass# 3. 获取文件夹的所有的待copy的文件名字  listdir()file_names = os.listdir(old_folder_name)print(file_names)# 4. 创建进程池po = multiprocessing.Pool(5)# 5. 向进程池中添加 copy文件的任务for file_name in file_names:po.apply_async(copy_file, args=(file_name, old_folder_name, new_folder_name))po.close()po.join()if __name__ == "__main__":main()

用到的文件夹默认放在和py原文件 一起

显示当前复制的进度

import os
import multiprocessingdef copy_file(q, file_name, old_folder_name, new_folder_name):"""完成文件的复制"""# print("======>模拟copy文件:从%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. 创建一个新的文件夹try:new_folder_name = old_folder_name + "[复件]"os.mkdir(new_folder_name)except:pass# 3. 获取文件夹的所有的待copy的文件名字  listdir()file_names = os.listdir(old_folder_name)# print(file_names)# 4. 创建进程池po = multiprocessing.Pool(5)# 5. 创建一个队列q = multiprocessing.Manager().Queue()# 6. 向进程池中添加 copy文件的任务for file_name in file_names:po.apply_async(copy_file, args=(q, file_name, old_folder_name, new_folder_name))po.close()# po.join()all_file_num = len(file_names)  # 测一下所有的文件个数copy_ok_num = 0while True:file_name = q.get()# print("已经完成copy:%s" % file_name)copy_ok_num+=1print("\r拷贝的进度为:%.2f %%" % (copy_ok_num*100/all_file_num), end="")if copy_ok_num >= all_file_num:breakprint() # 换行if __name__ == "__main__":main()

用的quenue和上面的版本不一样

写程序的过程,就是一个调试解决错误的一个过程

最重要是程序的流程图

Python文件夹copy器(多进程版)学习笔记相关推荐

  1. python学习之多进程小练笔:简版多进程文件夹copy器

    简版多进程文件夹copy器 在学习python多进程后,为了能快速掌握其中的知识点,就写了一个简单的多进程文件copy器. 主要的功能:在输入想要复制的文件后就会自动形成一个复制好的文件,还会有传输进 ...

  2. python基础教程(第三版)学习笔记(十八)

    第十八章 程序打包 本章重点介绍Setuptools,因为这是每个Python程序员都要用到的工具.实际上,Setuptools 并非只能用于创建基于脚本的Python安装程序,还可用于编译扩展.另外 ...

  3. 如何在cmd运行python文件夹_python怎么在cmd运行文件夹

    学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...

  4. Python 文件夹重命名的两种方法

    Python 文件夹批量重命名 目录 Python 文件夹批量重命名 方法一(os.listdir): 1. 加前缀/后缀 2. 替换重命名 方法二(os.walk): 1. 加前缀/后缀 2. 替换 ...

  5. Android 编程之入门开发文件夹管理器开发详细讲解-1

    在我们的手持设备中,一般都会自带设备公司自己开发的文件管理系统.拍照系统之类的东东,今天我给大伙说说入门级开发的文件夹管理器,代码贼少 总共就6个类吧,没有夹杂其他外部应用,就是一个纯文件夹管理器 A ...

  6. 36篇博文带你学完opencv :python+opencv进阶版学习笔记目录

    基础版学习笔记传送门 36篇博文带你学完opencv :python3+opencv学习笔记汇总目录(基础版) 进阶版笔记 项目 opencv进阶学习笔记1: 调用摄像头用法大全(打开摄像头,打开摄像 ...

  7. android 自定义文件夹管理器

    自定义android 文件夹管理器 由于近期项目要求,要客户可以自己选择文件夹路径,试了原生的文件夹管理器太难看了,而且还必须选择文件才行,PS:本人菜鸟,只能找到这样的原生方法,还请大佬勿喷,然后没 ...

  8. 《Python编程:从入门到实战》(第2版)学习笔记 第5章 if语句

    [写在前面]为进一步提高自己的python代码能力,打算把几本经典书籍重新过一遍,形成系统的知识体系,同时适当记录一些学习笔记,我尽量及时更新!先从经典的<Python编程:从入门到实战> ...

  9. python文件夹在哪_Python文件夹与文件的相关操作(推荐)

    最近在写的程序频繁地与文件操作打交道,这块比较弱,还好在百度上找到一篇不错的文章,这是原文传送门,我对原文稍做了些改动. 有关文件夹与文件的查找,删除等功能 在 os 模块中实现.使用时需先导入这个模 ...

  10. WIN10右键文件夹资源管理器会卡死

    WIN10右键文件夹资源管理器会卡死 现象描述 近期在win10系统环境使用过程中,右键文件夹后资源管理器莫名卡死,无法正常操作.同时在桌面空白位置右键时,可正常跳出菜单. 解决方法 在网上找了许多方 ...

最新文章

  1. 关于业务系统的架构思考
  2. 验证码生成java_JAVA-验证码生成
  3. 【linux】linux系统配置静态IP地址(超详细,手把手教会)
  4. centos6.5安装配置LDAP服务[转]
  5. spssχ2检验_卡方检验与单因素logistic回归分析结果比较
  6. Web开发与设计之Google兵器谱-Web开发与设计利器
  7. MySQL中的datetime对应Java类型
  8. .NET动态调用WebService
  9. Java程序猿从笨鸟到菜鸟之(九十二)深入java虚拟机(一)——java虚拟机底层结构具体解释...
  10. 《剑指offer》面试题6——重构二叉树——已知 前序遍历和中序遍历,求后序遍历(C++)
  11. Windows操作系统安全配置缺陷自动检测技术
  12. MATLAB作图颜色
  13. 全志A33_Vstar
  14. 国外兼职网站列举 79个
  15. 使用近场探头和电流探头进行EMI干扰排查
  16. 360随身WiFi取消登录与欢迎界面
  17. 表格OCR相关资源整理【ICDAR】【表格识别】【持续更新...】
  18. django数据库错误django. db. utils. OperationalError: ( 1044,‘Access denied for user’ erqueque’@' %’to‘dj’
  19. 半群 群 阿贝尔群 环 整数环 多项式环
  20. Android进阶学习-自定义主题(3)

热门文章

  1. linux禁止客户端上传文件_linux 文件服务
  2. 实现模拟内存动态分区分配算法_你还在为了JVM而烦恼么?(内存结构和垃圾回收算法)...
  3. python (元祖\列表\集合\字典)基础用法
  4. vs有断点就卡死_再分享 5 个 vs 调试技巧
  5. matlab 一维 fft,matlab - 一维信号的频谱分析(FFT等) - 堆栈内存溢出
  6. python计算无穷级数求和,无穷级数求和的积分审敛法
  7. 分片报文的最后一片_分片报文攻击防范 - CloudEngine 12800, 12800E V200R005C10 配置指南-安全 - 华为...
  8. 1. COM编程——什么是组件
  9. Lync 小技巧-8-超速-更新-地址簿
  10. [转]微信小程序之加载更多(分页加载)实例 —— 微信小程序实战系列(2)...