C/C++教程

进程 7.多进程实现文件夹copy

本文主要是介绍进程 7.多进程实现文件夹copy,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

多进程实现文件夹copy

文件位置:G:/PyCharmProject/zero/13.多任务 - 进程/test
copy位置:C:/Users/lenovo/Desktop/test

步骤:
    1.定义变量接收源文件夹路径和目标文件夹路径
    2.在目标路径创建文件夹
    3.获取源文件夹中的文件列表
    4.根据文件列表得到所有文件名
    5.定义copy文件的函数

copy文件的函数:
    参数:源文件路径,目标文件路径,文件名
    1.拼接源文件和目标文件的完整路径
    2.打开源文件和目标文件
    3.循环执行读写操作

import os
import multiprocessing

def copy_work(source_dir,dest_dir,file_name):
    process = multiprocessing.current_process()
    print(f'进程 {process} 正在执行copy')
    source_path = source_dir + '/' + file_name
    dest_path = dest_dir + '/' + file_name

    with open(source_path,'rb') as source_file:

        with open(dest_path,'wb') as dest_file:
            while True:
                source_text = source_file.read(1024)
                if not source_text:
                    break
                dest_file.write(source_text)
                print(f'已copy:{file_name}')

if __name__ == '__main__':
    # 定义变量接收源文件夹路径和目标文件夹路径
    source_dir = './test'
    dest_dir = 'C:/Users/lenovo/Desktop/test'

    # 在目标路径创建文件夹
    try:
        os.mkdir(dest_dir)
        print('文件夹已创建')
    except:
        print('文件夹已存在')

    # 获取源文件夹中的文件列表
    file_list = os.listdir(source_dir)
    print(f'源文件列表:{file_list}')

    # 创建进程池
    pool = multiprocessing.Pool(3)

    # 根据文件列表得到所有文件名
    for file_name in file_list:
        print(f'准备copy:{file_name}')
        # # 调用copy文件的函数
        # copy_work(source_dir,dest_dir,file_name)

        pool.apply_async(copy_work,(source_dir,dest_dir,file_name))
    pool.close()
    pool.join()
这篇关于进程 7.多进程实现文件夹copy的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!