python文件夹copy器(多进程版)
本节的练习的要求如下:
- 输入要拷贝文件夹的文件名称
- 读取该文件夹下的所有文件
- 启动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器(多进程版)的更多相关文章
- 文件夹copy器(多进程版)
import multiprocessing import os import time import random def copy_file(queue, file_name,source_fol ...
- 线程_multiprocessing实现文件夹copy器
import multiprocessing import os import time import random def copy_file(queue,file_name,source_fold ...
- Python文件夹备份
Python文件夹备份 import os,shutil def file_copy(path1,path2): f2 = [filename1 for filename1 in os.listdir ...
- Java 实现文件上传、下载、打包、文件copy、文件夹copy。
文件and文件夹copy package org.test; import java.io.*; public class FileCopy { /** * 复制单个文件 * * @param old ...
- 文件Copy和文件夹Copy
文件Copy和文件夹Copy using System.Collections.Generic; using System.Linq; using System.Text; using System. ...
- Python 文件夹及文件操作
import os import os.path from shutil import copy def copyfile(src, dst): count = 1 for filename in o ...
- Colorful(Folders星语多彩文件夹) v1.7绿色版
软件名称:星语多彩文件夹ColorfulFolders v1.7绿色版软件类别:国产软件运行环境:WinXP/2003/Vista/Win7/Win2008软件语言:简体中文授权方式:免费版软件大小: ...
- cad.net 利用win32api实现不重复打开dwg路径的文件夹(资源管理器)
这里地址的方法也是可用的,但是net3.5不能使用 为此我选择使用win32api的方式来遍历当前桌面所有资源管理器 /// <summary> /// 不重复打开dwg路径的资源管理器 ...
- iOS开发文件夹--Copy items if needed
蓝色文件夹 蓝色文件夹(folder)一般作为资源文件夹使用,与黄色文件夹的主要区别是不参与编译,所以说如果你在这些文件夹下编写的逻辑代码是不参与编译的,其他文件也不能直接引用它们,若引用其中文件需要 ...
随机推荐
- Lesson 22 A glass envelope
Text My daughter, Jane, never dreamed of receiving a letter from a girl of her own age in Holland. L ...
- Akka-CQRS(6)- read-side
前面我们全面介绍了在akka-cluster环境下实现的CQRS写端write-side.简单来说就是把发生事件描述作为对象严格按发生时间顺序写入数据库.这些事件对象一般是按照二进制binary方式如 ...
- 4.TableLayout、回调接口
会话详情页 listview条目布局 列,当第0列的内容过多时,不至于将其他列的内容,挤出屏幕 --> <TableLayout android:id="@+id/tl_rece ...
- 吴恩达机器学习笔记49-主成分分析问题(Principal Component Analysis Problem Formulation)
主成分分析(PCA)是最常见的降维算法. 在PCA 中,我们要做的是找到一个方向向量(Vector direction),当我们把所有的数据都投射到该向量上时,我们希望投射平均均方误差能尽可能地小.方 ...
- 第34节:Java当中的异常
Java当中的异常 了解Java当中的异常,那么什么是异常呢?异常又有什么分类呢?异常中的特殊结构:try...catch...finally 结构的使用方法. 异常是一种对象,是靠虚拟机产生的,异常 ...
- log4j日志输出到日志文件中和控制台中 +log4j配置详解
1.引入log4j的jar包 https://mvnrepository.com/,可以找到log4j的jar和依赖. 2.创建log4j.properties,并配置log4j #设置日志的级别 , ...
- 大道至简第一章--java伪代码读后感
import java.大道至简.编程的精义; //愚公移山 public class 愚公移山 { public static void main(String[] args) { //惩山北之塞, ...
- Java 程序员必备的 15 个框架,前 3 个地位无可动摇!
Java 程序员方向太多,且不说移动开发.大数据.区块链.人工智能这些,大部分 Java 程序员都是 Java Web/后端开发.那作为一名 Java Web 开发程序员必须需要熟悉哪些框架呢? 今天 ...
- ASP.NET Core微服务+Tabler前端框架搭建个人博客1--开始前想说的话
写在前面 本人为在读研究生,特别喜欢.NET,觉得.NET的编程方式.语法都特别友好,学习.NET Core已经差不多有一年半了,从一开始不知道如何入门到现在终于可以编写一些小的应用程序,想一想还是非 ...
- 1.numpy的用法
numpy创建ndarray对象的三种方法 1.1.list转化 In [8]: import numpy as np In [9]: a = [1,2,3,4] In [10]: x1 = np.a ...