python实现多进程按序号批量修改文件名的方法示例

 更新时间:2019年12月30日 08:46:01   作者:团长sama  
这篇文章主要介绍了python实现多进程按序号批量修改文件名的方法,涉及Python多进程与文件相关操作技巧,需要的朋友可以参考下

本文实例讲述了python实现多进程按序号批量修改文件名的方法。分享给大家供大家参考,具体如下:

说明

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

代码

import os
import re
from multiprocessing import Pool
def getAllFilePath(pathFolder,filter=[".jpg",".txt"]):
  #遍历文件夹下所有图片
  result=[]
  #maindir是当前搜索的目录 subdir是当前目录下的文件夹名 file是目录下文件名
  for maindir,subdir,file_name_list in os.walk(pathFolder):
    for filename in file_name_list:
      apath=os.path.join(maindir,filename)
      ext=os.path.splitext(apath)[1]#返回扩展名
      if ext in filter:
        result.append(apath)
  return result
def changName(filePath,changeNum):
  fileName=os.path.basename(filePath)
  dirName=os.path.dirname(filePath)
  pattern = re.compile(r'\d+')
  if len(pattern.findall(filePath))!=0:
    numInFileName=str(int(pattern.findall(fileName)[0])-changeNum)
    newFileName=pattern.sub(numInFileName,fileName)
    os.rename(filePath,os.path.join(dirName,newFileName))
    print('{1} is changed as {0}'.format(newFileName,fileName))
def changeNameByList(fileList,changNum):
  print('fileList len is:{}'.format(len(fileList)))
  for fileName in fileList:
    changName(fileName,changNum)
    print(fileName,' is done!')
if __name__ =='__main__':
  allFilePath=getAllFilePath(r'E:\Numberdata\4')
  n_total=len(allFilePath)
  n_process=8 #8线程
  #每段子列表长度
  length=float(n_total)/float(n_process)
  indices=[int(round(i*length)) for i in range(n_process+1)]
  sublists=[allFilePath[indices[i]:indices[i+1]] for i in range(n_process)]
  #生成进程池 
  p=Pool(n_process)
  for i in sublists:
    print("sublist len is {}".format(len(i)))
    p.apply_async(changeNameByList, args=(i,161130))
  p.close()
  p.join()

注意事项

  1. 多进程下python vscode终端debug不报错 注意可能潜在的bug
  2. os.rename()无法将文件命名成已经存在的文件,否则会报错

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总

希望本文所述对大家Python程序设计有所帮助。

相关文章

  • 使用Py2Exe for Python3创建自己的exe程序示例

    使用Py2Exe for Python3创建自己的exe程序示例

    今天小编就为大家分享一篇使用Py2Exe for Python3创建自己的exe程序示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python 经典贪心算法之Prim算法案例详解

    Python 经典贪心算法之Prim算法案例详解

    这篇文章主要介绍了Python 经典贪心算法之Prim算法案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • Python pandas读取CSV文件的注意事项(适合新手)

    Python pandas读取CSV文件的注意事项(适合新手)

    这篇文章主要给大家介绍了关于Python pandas读取CSV文件的注意事项,非常适合新手,csv是我接触的比较早的一种文件,比较好的是这种文件既能够以电子表格的形式查看又能够以文本的形式查看,需要的朋友可以参考下
    2021-06-06
  • 浅谈python写入大量文件的问题

    浅谈python写入大量文件的问题

    今天小编就为大家分享一篇浅谈python写入大量文件的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Linux上Miniconda的安装的实现步骤

    Linux上Miniconda的安装的实现步骤

    Miniconda是一个轻量级、免费且开源的跨平台软件包管理系统,本文主要介绍了Linux上Miniconda的安装的实现步骤,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • Python参数传递由浅入深实例教程

    Python参数传递由浅入深实例教程

    这篇文章主要为大家介绍了Python参数传递由浅入深实例教程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • pytorch 如何查看数据类型和大小

    pytorch 如何查看数据类型和大小

    这篇文章主要介绍了pytorch 实现查看数据类型和大小的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • Python中的 Numpy 数组形状改变及索引切片

    Python中的 Numpy 数组形状改变及索引切片

    这篇文章主要介绍了Python中的 Numpy 数组形状改变及索引切片,Numpy提供了一个reshape()方法,它可以改变数组的形状,返回一个新的数组,更多相关内容需要的小伙伴可以参考下面文章
    2022-05-05
  • python list数据等间隔抽取并新建list存储的例子

    python list数据等间隔抽取并新建list存储的例子

    今天小编就为大家分享一篇python list数据等间隔抽取并新建list存储的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • 基于Python实现PDF区域文本提取工具

    基于Python实现PDF区域文本提取工具

    这篇文章主要为大家介绍了如何通过Python实现一个非常精简的图像化的PDF区域选择提取工具,文中示例代码讲解详细,感兴趣的小伙伴可以学习一下
    2021-12-12

最新评论