本节的练习的要求如下:

  • 输入要拷贝文件夹的文件名称
  • 读取该文件夹下的所有文件
  • 启动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. Maven整合SSM测试

    前面也说到了关于SSM的整合,话不多说直接从创建项目开始CRUD之路(参考前面写过的Mybatis和Spring整合,SSM简单整合),这是整个项目的结构 以及最终的结果.(附上下载地址) 一.创建M ...

  2. Javascript高级编程学习笔记(39)—— DOM(5)Comment

    Comment类型 顾名思义,comment类型指的就是注释节点在HTML文档中的类型 也就是说平时我们在代码中的注释,在HTML解析的时候也会被解析为一类节点 让我们可以根据这些节点进行一系列的操作 ...

  3. JavaScript使用浏览器内置XMLHttpRequest对象执行Ajax请求

    所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject).XMLHttpRequest 用于在后台与服务器交换数据.这意味着可以在不重新加载整个 ...

  4. volatile和synchronized关键字

    synchronized java课上讲到过synchronized 首先看看用synchronized和没用synchronized的区别 import lombok.Getter; /** * @ ...

  5. mesos支持gpu代码分析以及capos支持gpu实现

    这篇文章涉及mesos如何在原生的mesoscontainerizer和docker containerizer上支持gpu的,以及如果自己实现一个mesos之上的framework capos支持g ...

  6. newwork setup

    #-*-coding:utf-8-*- ######################################################################### # Copy ...

  7. 接口隔离原则(ISP)

    设计应用程序的时候,如果一个模块包含多个子模块,那么我们应该小心对模块做出抽象.设想该模块由一个类实现,我们可以把系统抽象成一个接口.但是要添加一个新的模块扩展程序时,如果要添加的模块只包含原系统中的 ...

  8. Mycat - 高可用与负载均衡实现,满满的干货!

    前言 开心一刻 和朋友去吃小龙虾,隔壁桌一个小女孩问妈妈:"妈妈,小龙虾回不了家,它妈妈会不会着急?" 她妈妈愣住了,我扒虾的手停下了,这么善良的问题,怎么下得了口.这是老板急忙过 ...

  9. Java——this关键字

    前言 this关键字属于Java中比较复杂的关键字之一,若是学习过C++或者其他的一些面向对象语言也会遇到this这个关键字并且都会看到this的含义就是表示当前对象.什么叫做表示当前对象?this在 ...

  10. 【测试工程师面试】在BOSS直聘上和面试官的一问一答

    岗位描述: 信用卡核心系统功能测试,负责测试计划制定,测试设计,测试执行,测试进度掌控,自动化工具建设等工作.有责任心,执行力强,工作认真细致,逻辑思维强熟悉linux,oracle或者IBM大型机操 ...