Python学习日志——多进程和多线程实现文件多任务拷贝器

环境:windows
一. 多进程实现文件多任务拷贝器
需求分析

1.判断目标文件夹是否存在,如果不存在就创建,存在则不创建
2.遍历源文件夹中所有文件,并拷贝到目标文件夹
3.采用进程实现多任务,并完成拷贝

实现步骤

1.定义源文件夹所在的路径,目标文件夹所在路径
2.创建目标文件夹
3.通过os.listdir获取源目录中的文件列表
4.遍历每个文件,定义一个函数,专门实现文件拷贝
5.采用进程实现多任务,完成高并发拷贝

import os
import multiprocessing
def copy_file(file_name, source_dir, dest_dir):
    # 1 拼接源文件路径和目标文件路径
    source_path = source_dir + '\\' + file_name
    dest_path = dest_dir + '\\' + file_name
    # 2 打开源文件和目标文件
    with open(source_path, 'rb') as source_file:
        with open(dest_path, 'wb') as dest_file:
            # 3 循环读取源文件到目标路径
            while True:
                data = source_file.read(1024)
                if data:
                    dest_file.write(data)
                else:
                    break
if __name__ == '__main__':
    # 1 定义源文件夹和目标文件夹
    source_dir = r'C:\Users\Administrator\Desktop\7337428\体系架构2.0'
    dest_dir= r'C:\Users\Administrator\Desktop\1'

    # 2.创建目标文件夹
    try:
        os.mkdir(dest_dir)
    except:
        print("目标文件夹已经存在")
    # 3.读取源文件夹的文件列表
    file_list = os.listdir(source_dir)
    # 4.遍历文件列表实现拷贝
    for file_name in file_list:
        # 5.使用多进程实现多任务拷贝
        sub_process = multiprocessing.Process(target=copy_file, args=(file_name, source_dir, dest_dir))
        sub_process.start()

二.多线程实现文件多任务拷贝器
线程与进程的使用方法除了导入的包不同外,其它几乎完全一样,此处不再赘述。

import os
import threading
def copy_file(file_name, source_dir, dest_dir):
    # 1 拼接源文件路径和目标文件路径
    source_path = source_dir + '\\' + file_name
    dest_path = dest_dir + '\\' + file_name
    # 2 打开源文件和目标文件
    with open(source_path, 'rb') as source_file:
        with open(dest_path, 'wb') as dest_file:
            # 3 循环读取源文件到目标路径
            while True:
                data = source_file.read(1024)
                if data:
                    dest_file.write(data)
                else:
                    break
if __name__ == '__main__':
    # 1 定义源文件夹和目标文件夹
    source_dir =r'C:\Users\Administrator\Desktop\7337428\体系架构2.0'
    dest_dir= r'C:\Users\Administrator\Desktop\1'

    # 2.创建目标文件夹
    try:
        os.mkdir(dest_dir)
    except:
        print("目标文件夹已经存在")
    # 3.读取源文件夹的文件列表
    file_list = os.listdir(source_dir)
    # 4.遍历文件列表实现拷贝
    for file_name in file_list:
        # copy_file(file_name, source_dir, dest_dir)
        # 5.使用多线程实现多任务拷贝
        sub_thread = threading.Thread(target=copy_file, args=(file_name, source_dir, dest_dir))
        sub_thread.start()

注:在win环境下,书写文件路径时需在路径前面加上“r”,用来显式声明字符串不用转义,否则会发生以下报错。

SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

你可能感兴趣的:(Python学习日志,python,windows,pycharm)