python实现多进程按序号批量修改文件名的方法示例
本文实例讲述了python实现多进程按序号批量修改文件名的方法。分享给大家供大家参考,具体如下:
说明
文件名命名方式如图,是数字序号开头,但是中间有些文件删掉了,序号不连续,这里将序号连续起来,总的文件量有40w+,故使用多进程
代码
importos
importre
frommultiprocessingimportPool
defgetAllFilePath(pathFolder,filter=[".jpg",".txt"]):
#遍历文件夹下所有图片
result=[]
#maindir是当前搜索的目录subdir是当前目录下的文件夹名file是目录下文件名
formaindir,subdir,file_name_listinos.walk(pathFolder):
forfilenameinfile_name_list:
apath=os.path.join(maindir,filename)
ext=os.path.splitext(apath)[1]#返回扩展名
ifextinfilter:
result.append(apath)
returnresult
defchangName(filePath,changeNum):
fileName=os.path.basename(filePath)
dirName=os.path.dirname(filePath)
pattern=re.compile(r'\d+')
iflen(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}ischangedas{0}'.format(newFileName,fileName))
defchangeNameByList(fileList,changNum):
print('fileListlenis:{}'.format(len(fileList)))
forfileNameinfileList:
changName(fileName,changNum)
print(fileName,'isdone!')
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))foriinrange(n_process+1)]
sublists=[allFilePath[indices[i]:indices[i+1]]foriinrange(n_process)]
#生成进程池
p=Pool(n_process)
foriinsublists:
print("sublistlenis{}".format(len(i)))
p.apply_async(changeNameByList,args=(i,161130))
p.close()
p.join()
注意事项
- 多进程下pythonvscode终端debug不报错注意可能潜在的bug
- os.rename()无法将文件命名成已经存在的文件,否则会报错
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python进程与线程操作技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》、《Python+MySQL数据库程序设计入门教程》及《Python常见数据库操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
热门推荐
10 香港老妈结婚祝福语简短
11 毕业立体贺卡祝福语简短
12 简短新年年会祝福语
13 评论小品祝福语大全简短
14 恭喜师兄结婚祝福语简短
15 员工集体辞职祝福语简短
16 高中新生祝福语 简短
17 装修祝福语男生搞笑简短
18 生日开业蛋糕祝福语简短