python怎么实现多进程按序号批量修改文件名

  介绍

小编给大家分享一下python怎么实现多进程按序号批量修改文件名,希望大家阅读完这篇文章之后都有所收获、下面让我们一起去探讨吧!

<强>说明

文件名命名方式如图,是数字序号开的头,但是中间有些文件删掉了,序号不连续,这里将序号连续起来,总的文件量有40 w +,故使用多进程

<强>代码

import 操作系统   import 再保险   得到multiprocessing  import 池   def  getAllFilePath (pathFolder过滤器=[“.jpg",“.txt"]):   #才能遍历文件夹下所有图片   结果才能=[]   # maindir才能是当前搜索的目录,子目录是当前目录下的文件夹名,文件是目录下文件名   for 才能;maindir子目录,file_name_list 拷贝os.walk (pathFolder):   ,,,for  filename 拷贝file_name_list:   ,,,,,apath=os.path.join (maindir文件名)   ,,,,,ext=os.path.splitext (apath)[1] #返回扩展名   ,,,,,if  ext 拷贝过滤器:   ,,,,,,,result.append (apath)   return 才能结果   def  changName (filePath changeNum):   文件名才能=os.path.basename (filePath)   目录名才能=os.path.dirname (filePath)   pattern 才能=,re.compile (" # 39; \ d + & # 39;)   if 才能;len (pattern.findall (filePath)) !=0:   ,,,numInFileName=str (int (pattern.findall(文件名)[0])-changeNum)   ,,,newFileName=pattern.sub (numInFileName文件名)   ,,,os.rename (filePath, os.path.join(目录名,newFileName))   ,,,print (& # 39; {1}, is  changed  as  {0} & # 39; .format (newFileName文件名))   changNum def  changeNameByList(文件列表):   打印才能(& # 39;fileList  len 是:{}& # 39;.format (len(文件列表)))   for 才能;fileName 拷贝文件列表:   ,,,changName(文件名,changNum)   ,,,print(文件名,& # 39;,is 完成了! & # 39;)   if  __name__ ==& # 39; __main__ # 39;:   allFilePath才能=getAllFilePath (" # 39; E: \ Numberdata \ & # 39; 4)   n_total才能=len (allFilePath)   n_process才能=8,# 8线程   #才能每段子列表长度   长度=才能浮(n_total)/浮动(n_process)   指标才能=[int(圆(我*长度)),for 小姐:拷贝范围(n_process + 1))   子列表才能=[allFilePath[指标[我]:指标[i + 1]], for 小姐:拷贝范围(n_process)]   #生才能成进程池,   p=才能池(n_process)   for 才能小姐:拷贝子列表:   ,,,print (“sublist  len  is  {}“.format (len (i)))   ,,,p.apply_async (changeNameByList, args=(我161130))   p.close才能()   p.join才能()

<强>注意事项

<李>

多进程下python vscode终端调试不报错注意可能潜在的错误

<李>

os.rename()无法将文件命名成已经存在的文件,否则会报错

看完了这篇文章,相信你对“python怎么实现多进程按序号批量修改文件名”有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!

python怎么实现多进程按序号批量修改文件名