import os
import multiprocessing def copy_file(q,file_name,new_folder_name,old_folder_name):
with open(old_folder_name + "/" + file_name,"rb") as f1, open(new_folder_name + "/" + file_name,"wb") as f2:
content = f1.read()
f2.write(content)
q.put(file_name) def main():
# 1.获取文件夹名字
old_folder_name = input("请输入想要copy的文件夹的名字:")
# 2.创建一个新文件夹
try:
new_folder_name = old_folder_name + "[复件]"
os.mkdir(new_folder_name)
except:
# 如果创建失败直接pass
pass
# 3.获取文件夹里文件的名字
file_names = os.listdir(old_folder_name)
# 4.创建进程池
po = multiprocessing.Pool(5)
q = multiprocessing.Manager().Queue()
for file_name in file_names:
# 5.复制文件到新文件夹里去
po.apply_async(copy_file,(q,file_name,new_folder_name,old_folder_name)) po.close() # 计算数据
copy_ok_num = 0
while True:
new_file_name = q.get()
# 记录复制完成的数量
copy_ok_num+=1
print("\r拷贝的进度为%.2f %%" % (copy_ok_num * 100 / len(file_names)),end="")
if copy_ok_num >= len(file_names):
break if __name__ == '__main__':
main()
请输入想要copy的文件夹的名字:test
拷贝的进度为100.00 %

  

多任务案例--文件夹copy.py的更多相关文章

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

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

  2. 文件Copy和文件夹Copy

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

  3. python-os创建文件夹-create_dir_if_not_exist.py

    #!/bin/usr/env python3 __author__ = 'nxz' import os import argparse MESSAGE = '%s 文件夹已经存在' def creat ...

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

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

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

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

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

    本节的练习的要求如下: 输入要拷贝文件夹的文件名称 读取该文件夹下的所有文件 启动5个进程来拷贝文件夹,将拷贝成功的文件名称放入队列中 主进程中显示文件拷贝的进度 代码如下: import multi ...

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

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

  8. C# 文件搬运(从一个文件夹Copy至另一个文件夹)

    时常我们会遇到文件的复制.上传等问题.特别是自动化生产方面,需要对机台抛出的档案进行搬运.收集,然后对资料里的数据等进行分析,等等. Winform下,列举集中较常见的档案的搬运. 1 private ...

  9. 目前为止最简洁的C#文件夹Copy代码,不接受反驳

    private static void CopyEntireDir(string sourcePath, string destPath) { foreach (string dirPath in D ...

随机推荐

  1. 构建C 程序

    1, 单个文件的编排顺序 #include指令 #define指令 类型定义 外部变量的声明 除main函数之外的函数的原型 main函数的定义 其他函数的定义

  2. LeetCode 20. 有效的括号(Valid Parentheses)

    20. 有效的括号 20. Valid Parentheses 题目描述 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须 ...

  3. C++ 根据两点式方法求直线并求两条直线的交点

    Line.h #pragma once //Microsoft Visual Studio 2015 Enterprise //根据两点式方法求直线,并求两条直线的交点 #include"B ...

  4. c++实现的顺序栈

    栈是一种运算受限的线性表,是一种先进后出的数据结构,限定只能在一端进行插入和删除操作,允许操作的一端称为栈顶,不允许操作的称为栈底 因此需要的成员变量如下 int *_stack; //指向申请的空间 ...

  5. SAS学习笔记52 Excel导入后日期错乱

    读入Excel数据到SAS中,很小概率会遇到日期格式错乱,如:将Excel中的日期导入到SAS后就变成一个字符型的数字 在SAS中换算一下就可以更正

  6. elk 流程图

    ELK流程图 单纯使用ElK实现分布式日志收集缺点: 1.logstash太多了,扩展不好. 2.读取IO文件,可能会产生日志丢失 3.不是实时性 这时候就需要引入 kafka. kafka基于主题模 ...

  7. pat天梯赛练习集合 L3-007 天梯地图

    加了一些花的最短路,点的个数为500不需要堆优化,改一下dij的判断条件就可以了. 上代码: #include <iostream> #include <cstring> #i ...

  8. js实现CheckBox全选或者不全选

    <html xmlns="http://www.w3.org/1999/xhtml"><head runat="server">< ...

  9. centos6克隆虚拟机后,网络无法访问和启动

    使用vmware安装centos6虚拟机时, 克隆虚拟机后无法访问网络. 原因是:产生了重复的网卡信息** 克隆后在70-persistent-net.rules文件中会多一行网卡信息,把第一行网卡信 ...

  10. angular中控制器之间传递参数的方式

    在angular中,每个controller(控制器)都会有自己的$scope,通过为这个对象添加属性赋值,就可以将数据传递给模板进行渲染,每个$scope只会在自己控制器内起作用,而有时候需要用到其 ...