• 文件夹复制器


     1 # -*- coding:utf-8 -*-
     2 # Author:Sure Feng
     3 
     4 import os
     5 import multiprocessing
     6 import time
     7 
     8 def copy_dir(src_dir, file, dest_dir, queue):
     9    """文件夹复制"""
    10    # 打开文件
    11    src_file = open((src_dir + "/" + file), "rb")
    12    dest_file = open(dest_dir + "/" + file, "wb")
    13    # 读写文件
    14    data = src_file.read()
    15    dest_file.write(data)
    16    # 传递进度
    17    queue.put(1)
    18    # 关闭文件
    19    src_file.close()
    20    dest_file.close()
    21 
    22 if __name__ == '__main__':
    23     # 获取源文件夹名
    24     src_dir = input("请输入源文件夹名称:")
    25     # 获取源文件夹内的文件列表名
    26     file_list = os.listdir(src_dir)
    27     # 获取目标文件夹
    28     dest_dir = src_dir + "_备份"
    29     os.mkdir(dest_dir)
    30     # 创建队列,显示进度
    31     queue = multiprocessing.Queue()
    32 
    33     # 创建多进程,完成文件复制
    34     for file in file_list:
    35         pro = multiprocessing.Process(target=copy_dir, args=(src_dir, file, dest_dir, queue))
    36         pro.start()
    37 
    38     complish_len = 0
    39     while True:
    40         if complish_len == len(file_list):
    41             break
    42         complish_len += queue.get()
    43         time.sleep(0.4)
    44 
    45         print("
     当前进度已完成 %.2f %%" % (complish_len/len(file_list) * 100), end="")
  • 相关阅读:
    排序算法(一)冒泡法
    java是传值还是传引用
    赫夫曼树与赫夫曼编码
    数据结构的相关概念
    字符集和字符编码的区别
    redis为什么选择单线程工作模型
    GET和POST请求的核心区别
    MySQL数据类型及后面小括号的意义
    java中的数据类型
    Jedis无法连接centOS7上的redis
  • 原文地址:https://www.cnblogs.com/sure-feng/p/10325729.html
Copyright © 2020-2023  润新知