Python利用多线程Pool制作文件夹复制器
Linux以及MAC windows都自带有复制文件夹功能,但是最近感觉自带的复制效率真的很低,写了一个简易的多线程复制器,代码如下,运行条件是在linux,利用终端瞬间复制了170多个py文件,感觉效率很快,大文件等还没测试,不过相信我,windows自带的复制粘贴遇到了很多小文件且数量居多的时候,速度龟速,好了下面是代码,大文件等可以自己测试。
import multiprocessing import os def copy(file_name,copy_folder,copying_folder): for s in file_name: with open(copy_folder+s,'rb') as f: copy_data = f.read() x = open(copying_folder+s,'wb') x.write(copy_data) x.close() def main(): # 因为需要拷贝的文件夹内容是不固定的,需要使用到进程池 processes = multiprocessing.Pool(10) copy_folder = input("请输入你要拷贝的文件夹的绝对路径") # 获取到了用户需要拷贝的文件夹路径,可以利用os模块的listdir()返回所有文件列表 file_name = os.listdir(copy_folder) copying_folder = input("请输入你要拷贝到的文件夹绝对路径") # 已经获取到需要待拷贝的文件夹 # 需要判断该文件夹是否存在 choice = os.path.exists(copying_folder) if choice == True: print("你输入的文件夹已经存在,是否继续") s = input("\t继续输入yes,退出输入exit:") if s == 'yes': processes.apply_async(copy,(file_name,copy_folder,copying_folder)) else: exit(0) else: os.mkdir(copying_folder) processes.apply_async(copy,(file_name,copy_folder,copying_folder)) processes.close() processes.join() if __name__ == '__main__': main()
自己测试了一下,结果如下
1 运行时的代码(注意:此为linux(mac)下的路径方式,windows使用输入路径均为\\)

2 test 文件夹内容展示

3 运行结束test1文件夹

4 test1 里的详细内容


浙公网安备 33010602011771号