python实现多进程按序号批量修改文件名的方法示例
作者:团长sama 时间:2021-10-30 08:33:42
本文实例讲述了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程序设计有所帮助。
来源:https://blog.csdn.net/sinat_24899403/article/details/87358709
标签:python,多进程,文件名
0
投稿
猜你喜欢
Python实现批量下载音效素材详解
2021-09-19 02:08:27
Python实现的FTP通信客户端与服务器端功能示例
2023-10-02 21:36:01
原来我一直安装 Python 库的姿势都不对呀
2021-03-28 10:42:41
详解python单元测试框架unittest
2022-05-31 23:16:58
insert和select结合实现"插入某字段在数据库中的最大值+1"的方法
2024-01-25 07:52:46
十幅图告诉你什么是PHP引用
2023-10-04 06:16:56
解决MySQL5.1安装时出现Cannot create windows service for mysql.error:0
2024-01-28 09:56:13
MySQL5.6安装图解(windows7/8_64位)
2024-01-12 13:48:00
go reflect要不要传指针原理详解
2024-04-26 17:27:14
用Python可视化新冠疫情数据
2021-10-14 06:06:39
关于django连接mysql数据库并进行数据库的创建的问题
2024-01-22 04:50:12
PHP用Session实现用户登陆功能
2023-06-18 02:09:38
Python实现五子棋人机对战 和人人对战
2023-01-14 07:59:52
基于ORA-12170 TNS 连接超时解决办法详解
2023-06-30 18:18:30
Python图像处理之图像金字塔详解
2022-03-11 10:35:04
解决import tensorflow as tf 出错的原因
2023-06-26 23:53:21
golang将切片或数组根据某个字段进行分组操作
2024-05-02 16:24:42
Python用K-means聚类算法进行客户分群的实现
2022-04-03 23:35:18
tensorflow 1.0用CNN进行图像分类
2022-08-17 17:32:29
一文读懂Python 枚举
2023-02-16 16:12:46