本文实例讲述了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()

注意事项

多进程下python vscode终端debug不报错 注意可能潜在的bug

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

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

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

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

本文地址: http://www.cppcns.com/jiaoben/python/296112.html

python列表批量 修改_python实现多进程按序号批量修改文件名的方法示例相关推荐

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

    本文实例讲述了python实现多进程按序号批量修改文件名的方法.分享给大家供大家参考,具体如下: 说明 文件名命名方式如图,是数字序号开头,但是中间有些文件删掉了,序号不连续,这里将序号连续起来,总的 ...

  2. python replace函数用法_Python实现的从右到左字符串替换方法示例

    本文实例讲述了Python实现的从右到左字符串替换方法.分享给大家供大家参考,具体如下: 一 . 前言 需要用到,但是发现python没有从右边开始替换的内置方法,默认的replace只是从左边开始, ...

  3. python敏感字替换_python用类实现文章敏感词的过滤方法示例

    过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束 第一步:建立一个敏感词库(.txt文本) 第二步:编写代码在文章中过滤 ...

  4. python 返回函数 闭包_python中闭包Closure函数作为返回值的方法示例

    前言 首先看看闭包的概念:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外 ...

  5. python列表增加一行_Python 列表中的修改、添加和删除元素的实现

    本文介绍的是列表中的修改.添加和删除元素.第一次写博客,如果本文有什么错误,还请大家评论指正.谢谢! 创建的列表大多数都将是动态的,这就意味着列表创建后,将随着程序的运行删减元素. 修改列表元素 修改 ...

  6. python列表字典操作_Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结...

    创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_star ...

  7. python列表浅复制_Python列表的深复制和浅复制示例详解

    一.深复制与浅复制 列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制 首先看代码: l1 = [5, 4, 3, 2, 1] # 用 ...

  8. python列表功能默写_Python list(列表)功能详解

    Python List append()方法 描述 append() 方法用于在列表末尾添加新的对象. 语法 append()方法语法: list.append(obj) 参数 obj -- 添加到列 ...

  9. python列表数据运算_Python基础(2)——数据类型:Numbers、列表、元组、字典、字符串、数据运算...

    #Numbers数字分为:int整型,long长整型,float浮点型,complex复数 x1= 10x2= 10.0 print(type(x1),type(x2))#print()函数,用于输出 ...

最新文章

  1. python bound unbound method
  2. macbook和 windows共享文件
  3. Eclipse新建SpringBoot项目,application.properties配置中文乱码
  4. python3 爬虫 requests安装_爬虫开发环境部署
  5. python文字识别并获取位置_python实现简单的文字识别
  6. Zend Guard 7 , Zend Guard Loader处理PHP加密
  7. Linux Shell脚本专栏_监控100台服务器磁盘利用率脚本_07
  8. telnet 的使用(ping 与 telnet)
  9. BIOS、BootLoader、uboot对比
  10. C#之Chart控件使用
  11. 如何在matlab中产生瞬态信号,基于小波分析的微弱信号检测及其在Matlab中的仿真...
  12. Java网页版仿QQ实现在线聊天功能
  13. 从安防行业网络化态势 看门禁市场发展风向
  14. x86 单线并发多拨_带宽“单线多拨“倍增大法教程
  15. Cocos Creator 微信小游戏排行榜
  16. 概述、 BGP AS 、BGP 邻居、 BGP 更新源 、BGP TTL 、BGP路由表、 BGP 同步
  17. Spring Boot使用宝兰德BES进行改造和部署
  18. 如何把密度函数化为标准正态二维分布_高中就开始学的正态分布,原来如此重要...
  19. NDK开发——FFmpeg实现视频转YUV、视频转RGB显示、音频转PCM、音频播放、音视频同步
  20. CyberWorld赛博世界是否能成为元宇宙核心力量

热门文章

  1. 201671010456-张琼 实验十四 团队项目评审课程学习总结
  2. 1013 B. And
  3. 对象变为指定格式的数组
  4. ASP.NET Web API之消息[拦截]处理(转)
  5. ASP站点无法访问怎么办
  6. Codeforces 724 C. Ray Tracing
  7. 关于js中function(e) e的理解
  8. centeros7安装mysql - 风中追风_lonely - 博客园
  9. MyBatis之八:需要说明的几个java api的生命周期以及封装
  10. 如何查看Exchange2010中邮箱数据库的用户邮箱占用情况