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


Posted in Python onDecember 30, 2019

本文实例讲述了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实现遍历目录的方法【测试可用】
Mar 22 Python
python中matplotlib实现最小二乘法拟合的过程详解
Jul 11 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
JSONLINT:python的json数据验证库实例解析
Nov 28 Python
如何在python中使用selenium的示例
Dec 26 Python
Python实现连接postgresql数据库的方法分析
Dec 27 Python
python实现自主查询实时天气
Jun 22 Python
Python 互换字典的键值对实例
Feb 12 Python
如何通过50行Python代码获取公众号全部文章
Jul 12 Python
解决Django后台ManyToManyField显示成Object的问题
Aug 09 Python
Python新手学习函数默认参数设置
Jun 03 Python
tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T
Jun 22 Python
Pytorch Tensor基本数学运算详解
Dec 30 #Python
python垃圾回收机制(GC)原理解析
Dec 30 #Python
利用Python代码实现一键抠背景功能
Dec 29 #Python
如何利用pygame实现简单的五子棋游戏
Dec 29 #Python
Python使用正则实现计算字符串算式
Dec 29 #Python
Django框架教程之中间件MiddleWare浅析
Dec 29 #Python
三个python爬虫项目实例代码
Dec 28 #Python
You might like
php pack与unpack 摸板字符字符含义
2009/10/29 PHP
解决PHP mysql_query执行超时(Fatal error: Maximum execution time …)
2013/07/03 PHP
PHP使用in_array函数检查数组中是否存在某个值
2015/03/25 PHP
php删除txt文件指定行及按行读取txt文档数据的方法
2017/01/30 PHP
php7安装yar扩展的方法详解
2017/08/03 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
PHP数组实际占用内存大小原理解析
2020/12/11 PHP
xml分页+ajax请求数据源+dom取结果实例代码
2008/10/31 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
Javascript获取HTML静态页面参数传递值示例
2013/08/18 Javascript
使用ajaxfileupload.js实现ajax上传文件php版
2014/06/26 Javascript
javascript将数字转换整数金额大写的方法
2015/01/27 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
2015/02/25 Javascript
JavaScript prototype属性详解
2016/10/25 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
微信小程序使用Promise简化回调
2018/02/06 Javascript
微信小程序按钮去除边框线分享页面功能
2018/08/27 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
JS实现判断有效的数独算法示例
2019/02/25 Javascript
vue项目中引入vue-datepicker插件的详解
2019/05/14 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
TensorFlow深度学习之卷积神经网络CNN
2018/03/09 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
为什么黑客都用python(123个黑客必备的Python工具)
2020/01/31 Python
基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达的源码
2021/02/18 Python
加拿大最大的钻石商店:Peoples Jewellers
2018/01/01 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
工业自动化毕业生自荐信范文
2014/01/04 职场文书
领导接待方案
2014/03/13 职场文书
重温入党誓词主持词
2015/06/29 职场文书