本节的练习的要求如下:

  • 输入要拷贝文件夹的文件名称
  • 读取该文件夹下的所有文件
  • 启动5个进程来拷贝文件夹,将拷贝成功的文件名称放入队列中
  • 主进程中显示文件拷贝的进度

代码如下:

import multiprocessing
import os
import time
import random def copy_file(q, file_name, source_folder_name, dest_folder_name):
"""拷贝文件"""
# print("正在拷贝文件:%s,%s ==> %s" % (file_name, source_folder_name, dest_folder_name))
f_read = open(source_folder_name + "/" + file_name, "rb")
f_write = open(dest_folder_name + "/" + file_name, "wb") while True:
content = f_read.read(1024)
if content:
f_write.write(content)
else:
break
f_write.close()
f_read.close() time.sleep(random.random()) # 放入已经拷贝完成的文件
q.put(file_name) def main():
# 获取要复制的文件夹名称
source_folder_name = input("请输入要复制的文件夹名称:") # 目标文件夹
dest_folder_name = source_folder_name + "[副本]" if not os.path.exists(dest_folder_name):
os.mkdir(dest_folder_name) # 获取文件夹中的所有普通文件名
file_names = os.listdir(source_folder_name) # 创建Queue
q = multiprocessing.Manager().Queue() # 创建pool
po = multiprocessing.Pool(5) for file_name in file_names:
po.apply_async(copy_file, args=(q, file_name, source_folder_name, dest_folder_name)) po.close() all_file_num = len(file_names)
copy_ok_num = 0 while True: file_name = q.get()
copy_ok_num += 1
print("\r拷贝的进度为:%.2f%%" % (copy_ok_num * 100 / all_file_num), end="") if copy_ok_num >= all_file_num:
break print("") if __name__ == "__main__":
main()

python文件夹copy器(多进程版)的更多相关文章

  1. 文件夹copy器(多进程版)

    import multiprocessing import os import time import random def copy_file(queue, file_name,source_fol ...

  2. 线程_multiprocessing实现文件夹copy器

    import multiprocessing import os import time import random def copy_file(queue,file_name,source_fold ...

  3. Python文件夹备份

    Python文件夹备份 import os,shutil def file_copy(path1,path2): f2 = [filename1 for filename1 in os.listdir ...

  4. Java 实现文件上传、下载、打包、文件copy、文件夹copy。

    文件and文件夹copy package org.test; import java.io.*; public class FileCopy { /** * 复制单个文件 * * @param old ...

  5. 文件Copy和文件夹Copy

    文件Copy和文件夹Copy using System.Collections.Generic; using System.Linq; using System.Text; using System. ...

  6. Python 文件夹及文件操作

    import os import os.path from shutil import copy def copyfile(src, dst): count = 1 for filename in o ...

  7. Colorful(Folders星语多彩文件夹) v1.7绿色版

    软件名称:星语多彩文件夹ColorfulFolders v1.7绿色版软件类别:国产软件运行环境:WinXP/2003/Vista/Win7/Win2008软件语言:简体中文授权方式:免费版软件大小: ...

  8. cad.net 利用win32api实现不重复打开dwg路径的文件夹(资源管理器)

    这里地址的方法也是可用的,但是net3.5不能使用 为此我选择使用win32api的方式来遍历当前桌面所有资源管理器 /// <summary> /// 不重复打开dwg路径的资源管理器 ...

  9. iOS开发文件夹--Copy items if needed

    蓝色文件夹 蓝色文件夹(folder)一般作为资源文件夹使用,与黄色文件夹的主要区别是不参与编译,所以说如果你在这些文件夹下编写的逻辑代码是不参与编译的,其他文件也不能直接引用它们,若引用其中文件需要 ...

随机推荐

  1. Pyhon学习笔记-基础3

    文件操作 1.基本操作 f = open("filename","r",encoding="utf-8") #打开文件,以r模式,字符编码模 ...

  2. 谈一款MOBA类游戏《码神联盟》的服务端架构设计与实现(更新优化思路)

    注:本文仅用于在博客园学习分享,还在随着项目不断更新和完善中,多有不足,暂谢绝各平台或个人的转载和推广,感谢支持. 一.前言 <码神联盟>是一款为技术人做的开源情怀游戏,每一种编程语言都是 ...

  3. 一些能体现个人水平的SQL语句[总结篇]

    作为一名小小的开发人员,刚入门的时候觉得很难,过了一段时间之后,发现很简单,很快就可以搞定很bug了.然而这并不能说明你就已经很牛掰了,只能说,你不了解其他太多的东西.应该说,数据库有几个共同的命令, ...

  4. StackExchange.Redis 模糊查询和删除

    初始化连接对象 _connectionString = ConfigurationManager.ConnectionStrings["RedisConnectionString" ...

  5. redis info 详解

    # Server(服务器信息)redis_version:3.0.6                              #redis服务器版本redis_git_sha1:00000000   ...

  6. 实现文件上传 你get了吗???

    实现文件上传: 1.jar包 需要用到两个jar包: commons-io.jar commons-fileupload.jar 下载地址:https://mvnrepository.com/ 2.f ...

  7. Python - References

    01 - Python文档 Python:https://www.python.org/ Documentation:https://docs.python.org/ Standard Library ...

  8. CentOS7安装详解

    本文基于vmware workstations进行CentOS7安装过程展示,关于vmware workstations安装配置本人这里不再介绍,基本过程相当于windows下安装个软件而已. 1.打 ...

  9. Java核心技术及面试指南 数据库方面的面试题归纳以及总结

    5.1.7.1 事务的四大特性是什么? ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库 ...

  10. Java核心技术及面试指南 面向对象部分的面试题总结以及答案

    问题2.7.1,开放性问题,说一下你对面向对象思想的了解. 要点1,先说基础概念,比如面向对象思想包括封装.继承.多态,然后说些语法,比如可以通过extends继承类.通过implement来实现接口 ...