# 思路:
# 1、定义变量,保存源文件和目标文件夹的路径
# 2、在目标路径创建新的文件夹
# 3、获取源文件夹中的所有文件(列表)
# 4、遍历列表得到所有文件名
# 5、定义函数进行文件拷贝
# 文件拷贝函数:
# 参数:源文件路径,目标文件路径,文件名
# 1、拼接源文件和目标文件的具体路径
# 2、打开源文件﹐创建目标文件
# 3、读取源文件的内容·写入到目标文件中(while)
import multiprocessing
import os
def copy_work(source_dir, dest_dir, file_name):
"""
根据参数拷贝文件
:param source_dir: 源文件路径
:param dest_dir: 目标文件路径
:param file_name: 文件名
:return:
"""
# 1、拼接源文件和目标文件的具体路径
source_path = source_dir + "/" + file_name
dest_path = dest_dir + file_name
# print(source_path, dest_path)
# 2、打开源文件﹐创建目标文件
# 3、读取源文件的内容·写入到目标文件中(while)
with open(source_path, "rb") as source_file:
with open(dest_path, "wb") as dest_file:
while True:
file_data = source_file.read(1024)
if file_data:
dest_file.write(file_data)
else:
break
if __name__ == '__main__':
# 1、定义变量,保存源文件和目标文件夹的路径
source_dir = "./test"
dest_dir = "C:/Users/MLoong/Desktop/文件拷贝器/"
# 2、在目标路径创建新的文件夹
try:
os.mkdir(dest_dir)
except Exception as e:
print("文件夹已经存在!")
# 3、获取源文件夹中的所有文件(列表)
file_list = os.listdir(source_dir)
# 创建进程池
pool = multiprocessing.Pool(3)
# 4、遍历列表得到所有文件名
for file_name in file_list:
# print(file_name)
# 5、定义函数进行文件拷贝
# copy_work(source_dir,dest_dir,file_name)
pool.apply_async(copy_work, (source_dir, dest_dir, file_name))
pool.close()
pool.join()