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()

注意事項

多進程下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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/260511.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/260511.shtml
英文地址,請注明出處:http://en.pswp.cn/news/260511.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Struts1 tag

標簽庫: a) struts框架下的struts標簽庫 b) sun jstl c標簽庫 作用: 1) jsp 和 java代碼分離 -- 自定義標簽 用標簽來替代Java的代碼 2) struts標簽 能夠和struts-config.xml actionForm等特有的對象進行交互 stru…

“multiprocessing\spawn.py”, line 105, in spawn_main錯誤與解決方法

記錄一個不知名的錯誤錯誤解決方法OS: Windows 10 錯誤非常的長,以至于,我也沒有什么耐心去看,看了前面幾行,應該是多線程引起的。下面太長,可以選擇不看。 錯誤 Traceback (most recent call last): Trac…

hpunix下11gRac的安裝

一.檢查環境 1.操作系統版本# uname -a 2.補丁包三大補丁包#swlist -l bundle|grep QPKAPPS#swlist -l bundle|grep QPKBASE#swlist -l bundle|grep HWEnable11i #swlist -l patch -a supersedes|grep PHKL_XXXXX檢查是否已有或是已被替代For HP-UX 11i V3 (11.31): PHCO_40381…

【轉】徹底搞清計算結構體大小和數據對齊原則

數據對齊: 許多計算機系統對基本數據類型合法地址做出了一些限制,要求某種類型對象的地址必須是某個值K(通常是2,4或8)的倍數。這種對齊限制簡化了形成處理器和存儲器系統之間的接口的硬件設計。例如,假設一個處理器總是從存儲器中取出8個字節…

python里pip是什么意思_python使用pip的方法是什么

python使用pip的方法是什么 發布時間:2020-08-25 11:51:08 來源:億速云 閱讀:104 作者:小新 小編給大家分享一下python使用pip的方法是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下&am…

Pytorch 學習率衰減 之 余弦退火與余弦warmup 自定義學習率衰減scheduler

學習率衰減,通常我們英文也叫做scheduler。本文學習率衰減自定義,通過2種方法實現自定義,一是利用lambda,另外一個是繼承pytorch的lr_scheduler import math import matplotlib.pyplot as plt import numpy as np import torch i…

c++ 字符串賦給另一個_7.2 C++字符串處理函數

點擊上方“C語言入門到精通”,選擇置頂第一時間關注程序猿身邊的故事作者閆小林白天搬磚,晚上做夢。我有故事,你有酒么?C字符串處理函數C語言和C提供了一些字符串函數,使得用戶能很方便地對字符串進行處理。這些是放在…

如何檢測遠程主機上的某個端口是否開啟

有時候我們要測試遠程主機上的某個端口是否開啟,無需使用太復雜的工作,windows下就自帶了工具,那就是telnet。怎么檢測呢,按下面的步驟: 1、安裝telnet。我的win7下就沒有telnet,在cmd下輸入telnet提示沒有…

Windows10 + WSL (Ubuntu) + Anaconda + vscode 手把手配置python運行環境(含虛擬環境)

配置WSL windows桌面下,按下面順序可以找到 "啟動或關閉windows功能” , 開始 -> 設置 -> 應用 -> 應用和功能 -> 可選功能 -> 相關設置下 更多Windows功能(滾動鼠標到底部)點擊后,會彈出 啟動或…

Inline函數使用注意事項

Inline函數使用注意事項 1.在一個文件中定義的inline函數不能再另一個文件中使用 2.inline函數應簡潔,只有少數幾個語句。 3.在inline函數中不能有循環,if,switch語句。 4.inline函數要在調用和聲明前定義!!&#xff0…

2019編譯ffepeg vs_如何在windows10下使用vs2017編譯最新版本的FFmpeg和ffplay

該文章描述了如何在windows10 64位系統下面編譯出FFmpeg的庫及其自帶的ffplay播放器,而且全部采用最新的版本,這樣我們可以在vs2017的ide下調試ffplay,能使我們更容易學習FFmpeg的架構以及音視頻播放器的原理。步驟:1.安裝vs2017在…

訓練集山準確率高測試集上準確率很低_推薦算法改版前的AB測試

編輯導語:所謂推薦算法就是利用用戶的一些行為,通過一些數學算法,推測出用戶可能喜歡的東西;如今很多軟件都有這樣的操作,對于此系統的設計也會進行測試;本文作者分享了關于推薦算法改版前的AB測試&#xf…

C#實現漸變顏色的Windows窗體控件

C#實現漸變顏色的Windows窗體控件! 1,定義一個BaseFormGradient,繼承于System.Windows.Forms.Form2,定義三個變量: privateColor _Color1 Color.Gainsboro; privateColor _Color2 Color.White; privatefloat_ColorAngle 0f;3,重載OnPaintBackground方法 protecte…

ios7開發學習筆記-包括c oc 和ios介紹

請查看我的新浪資料分享 http://iask.sina.com.cn/u/2430843520 轉載于:https://www.cnblogs.com/langtianya/p/3708298.html

Windows下 jupyter notebook 運行multiprocessing 報錯的問題與解決方法

文章目錄測試用的代碼錯誤解決方法測試用的代碼 下面每一個對應一個jupyter notebook的單元格 import time from multiprocessing import Process, Queuedef generator():c 0while True:time.sleep(1.0) # read somethingyield cc 1%%timeds generator() for i in range(3…

如何將javaweb項目部署到linux下

以下是對將javaweb項目部署到linux下的方法進行了詳細的分析介紹一般都在windows下開發的現在部署到linux下將項目達成war包(用eclipse項目右鍵>Export>選擇war file)將tomcat(用winSCP當然你也可以用secureCRT用securCRT需要建立sftp(即上傳文件的目錄)用put tomcat命令…

vc mysql_vc6.0連接mysql數據庫

一、MySQL的安裝Mysql的安裝去官網下載就可以。。。最新的是5.7版本。。二、VC6.0的設置(1)打開VC6.中選0 工具欄Tools菜單下的Options選項,在Directories的標簽頁中右邊的“Show directories for:”下拉列表中“Includefiles”,然后在中間列表框中添加你…

python class用法_python原類、類的創建過程與方法

【小宅按】今天為大家介紹一下python中與class 相關的知識……獲取對象的類名python是一門面向對象的語言,對于一切接對象的python來說,咱們有必要深入的學習與了解一些知識首先大家都知道,要獲取一個對象所對應的類,需要使用clas…

網易公開課

計算機科學及編程導論 http://v.163.com/special/opencourse/bianchengdaolun.html 抽象編程 http://v.163.com/special/opencourse/abstractions.html轉載于:https://www.cnblogs.com/anyboo/archive/2012/08/24/2653537.html

深度學習中的一些常見的激活函數集合(含公式與導數的推導)sigmoid, relu, leaky relu, elu, numpy實現

文章目錄Sigmoid(x)雙曲正切線性整流函數 rectified linear unit (ReLu)PReLU(Parametric Rectified Linear Unit) Leaky ReLu指數線性單元 Exponential Linear Units (ELU)感知機激活%matplotlib inline %config InlineBackend.f…