多进程实现文件夹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()