号码网站建设,房屋装修在线设计网站,wordpress文章图片幻灯片,新乡手机网站建设[Python] 纯文本查看 复制代码多进程实现复制文件步骤#xff1a;(1)获得源文件夹路径#xff1b;(2)获取源文件夹下各文件的文件名(3)获得目标文件夹(4)复制文件(文件夹不能复制)新增内容#xff1a;复制一个文件夹下的所有文件知识点#xff1a;(1)os模块#xff1a;1多进程实现复制文件步骤(1)获得源文件夹路径(2)获取源文件夹下各文件的文件名(3)获得目标文件夹(4)复制文件(文件夹不能复制)新增内容复制一个文件夹下的所有文件知识点(1)os模块1listdir(path),得到路径path下的所有文件夹名和文件名。(只有一层)2mkdir(path),新建该路径的文件夹3path.isdir(path),该路径是否为文。是返回true4path.isfile(path), 该路径是否为文件。 是返回true。(2)multiprocess 多进程1Pool() 进程池2Manger().Queue() 队列(进程通信)(3)递归实现复制子文件夹下的文件。2019年10月23日import multiprocessingimport osimport time#1得到复制的文件夹名def get_old_folder_name():old_folder_name input(请输入复制目录:)return old_folder_name#2得到文件夹下的文件名def get_file_names( folder ):file_names os.listdir(folder)return file_names#3新建文件夹def creat_folder(new_folder_name):try:os.mkdir(new_folder_name)except:passreturn new_folder_name#4复制文件到指定文件夹下def copy_file(file_name, old_folder_name, new_folder_name,queue):try:#如果是文件进行复制if os.path.isfile( old_folder_name/file_name):#不知道文件类型直接使用二进制读取。old_f open(old_folder_name/file_name, rb)read_str old_f.read()old_f.close()new_f open(new_folder_name / file_name, wb)new_f.write(read_str)new_f.close()#如果是文件夹进行递归。 新建文件夹--》获取子文件夹文件名--》复制文件if os.path.isdir(old_folder_name/file_name):new_folder_name creat_folder(new_folder_name/file_name)old_folder_name old_folder_name /file_namefile_names get_file_names(old_folder_name)for file_name in file_names :copy_file(file_name, old_folder_name, new_folder_name, queue)except:pass#避免”复制“文件夹而产生的文件数量不够程序不能结束queue.put(1)#time.sleep(1)没有实际作用只是为了看进度条的效果time.sleep(1)#5主函数def main(queue):old_folder_name get_old_folder_name()print(原文件夹 ,old_folder_name)file_names get_file_names(old_folder_name)print(文件数量 ,len(file_names))new_folder_name input(请输入新的文件夹名:)new_folder_name creat_folder( new_folder_name)print(新文件夹 ,new_folder_name)for item in file_names :pool.apply_async(copy_file, (item,old_folder_name,new_folder_name ,queue))pool.close()file_num 0file_sum len(file_names)while True:if not queue.empty():queue.get()file_num1print(\r,end)print(▓*int(file_num/file_sum *50), end)print( 已完成 %.2f%% % (file_num/file_sum*100), end)if file_num file_sum:print()breakprint(复制完成)#5函数入口if __name__ __main__:pool multiprocessing.Pool(10)queue multiprocessing.Manager().Queue()main(queue)