进程 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()
上一篇:如何读取NIFTI格式图像(.nii文件)


下一篇:android中RecyclerView的简单使用(三),android系统开发视频教程