python批量修改文件名
生活随笔
收集整理的這篇文章主要介紹了
python批量修改文件名
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
python之批量修改文件名
文章目錄
- python之批量修改文件名
- 前言
- 一、python批量修改文件名
-
- 1.源碼
- 二、python批量修改文件名(按順序)
-
- 1.源碼
- 三、python批量修改文件名(刪除指定字符)
-
- 1.源碼
- 四、python批量修改文件名(按excel給定格式)
-
- 1.源碼
- 總結
前言
當我們從網站爬取若干張圖片,或需要將一些txt、excel、jpg等大批量的文件修改為有規律的名稱,方便整理。
提示:以下是本篇文章正文內容,下面案例可供參考
一、python批量修改文件名
提示:待修改的文件夾下只能包含需要修改的文件,然后更改源碼里面的路徑即可。
1.源碼
代碼如下(示例):
#批量修改文件名 #批量修改圖片文件名 import os import re import sys def renameall():fileList = os.listdir(r"E:pypython3.7 est est17") #待修改文件夾print("修改前:"+str(fileList)) #輸出文件夾中包含的文件currentpath = os.getcwd() #得到進程當前工作目錄os.chdir(r"E:pypython3.7 est est17") #將當前工作目錄修改為待修改文件夾的位置num=1 #名稱變量for fileName in fileList: #遍歷文件夾中所有文件pat=".+.(jpg|png|gif|py|txt)" #匹配文件名正則表達式pattern = re.findall(pat,fileName) #進行匹配os.rename(fileName,(str(num)+'.'+pattern[0])) #文件重新命名num = num+1 #改變編號,繼續下一項print("---------------------------------------------------")os.chdir(currentpath) #改回程序運行前的工作目錄sys.stdin.flush() #刷新print("修改后:"+str(os.listdir(r"E:pypython3.7 est est17"))) #輸出修改后文件夾中包含的文件 renameall()二、python批量修改文件名(按順序)
1.源碼
提示:使用os.listdir出現亂序,即修改文件名的時候不按照文件排列的順序,例如os.listdir排列的順序是按照例如:1,10,11,2,20,21…的順序,想得到的正常順序:1,2,3,4,5…需進行排序(參考自https://blog.csdn.net/weixin_42575079)
代碼如下(示例):
import os#設定文件路徑 path=r'E:pypython3.7 est est19excel' #獲取該目錄下所有文件,存入列表中 fileList=os.listdir(path) #get_key是sotred函數用來比較的元素,該處用lambda表達式替代函數。 get_key = lambda i : int(i.split('.')[0]) new_sort = sorted(fileList, key=get_key) #print(fileList, ' ', new_sort) n = 0for i in fileList:# 設置舊文件名(就是路徑+文件名)oldname = path + os.sep + new_sort[n] # os.sep添加系統分隔符# 設置新文件名newname = path + os.sep + 'p' + str(n + 1)+'.csv'os.rename(oldname, newname) # 用os模塊中的rename方法對文件改名print(oldname, '======>', newname)n += 1三、python批量修改文件名(刪除指定字符)
1、批量刪除指定字符段"-匯總數據-20211123"
2、批量刪除指定字符段"[ * 圖靈程序設計叢書 * ]."
(參考自https://blog.csdn.net/qiukui111)
1.源碼
代碼如下(示例):
import os import re import time"""對指定目錄下的所有文件進行有選擇的修改名稱""" def ReFileName(dirPath,pattern):""":param dirPath: 文件夾路徑:param pattern: 正則匹配模式:return:"""# 對目錄下的文件進行遍歷for file in os.listdir(dirPath):# 判斷是否是文件if os.path.isfile(os.path.join(dirPath, file)) == True:# 用正則匹配,去掉不需要的詞newName = re.sub(pattern, "", file)# 設置新文件名newFilename = file.replace(file, newName)# 重命名os.rename(os.path.join(dirPath, file), os.path.join(dirPath, newFilename))print("文件名已統一修改成功")if __name__ == '__main__':timeStart = time.time()dirPath = r"E:pypython3.7 est est19excel1" # pattern = re.compile(r'[{1}(.+)].')pattern = re.compile(r'-匯{1}(.+)3')ReFileName(dirPath,pattern)timeEnd = time.time()print("程序走了%d秒"%(timeEnd-timeStart))四、python批量修改文件名(按excel給定格式)
1、批量按照excel姓名和學號匹配修改圖片名稱;
1.源碼
代碼如下(示例):
import os import xlwings as wxdef listdir(path, list_name): #傳入存儲的listfor file in os.listdir(path):# 排除臨時的文件if '~$' in file:continue# 取得照片清單if ".jpg" in file:file_path = os.path.join(path,file)list_name.append(file_path)# 取得excel文件if ".xlsx" in file:index_file = os.path.join(path,file)print("數據源文件-->"+index_file)print(list_name)return index_filedef getinfo(new_name,index_file): # 獲取人員姓名和編號app = wx.App(visible=False, add_book=False) # 不打開baiexcelprint("讀取人員信息--->"+index_file)wb = app.books.open(index_file)sheet = wb.sheets[0]nrows = sheet.used_range.last_cell.row #獲取最大行數ncolumns = sheet.used_range.last_cell.column #獲取最大列數# 查找姓名和編號的列file_name = ""empl_name = ""empl_numb = ""ename_col = 0enumb_col = 0print("最大列數--->"+str(ncolumns))for col in range(1, ncolumns+1):if sheet.range((1,col)).value == "姓名":ename_col = colprint("姓名的列--->"+str(col))if sheet.range((1,col)).value == "學號":enumb_col = colprint("員工號的列--->"+str(col))# 取行中的姓名和編號for row in range(2,nrows+1):empl_name = str(sheet.range((row,ename_col)).value)empl_numb = str(sheet.range((row,enumb_col)).value)file_name = (empl_name + empl_numb).split('.')[0] # 新的名字print(file_name)new_name.append(file_name)print(new_name)wb.close()app.quit()def change_name(file_path,new_name,list_name):# 逐個處理照片for filename in list_name:print("舊文件名"+filename)old_name = (os.path.basename(filename)).split('.')[0]# 查找新名字清單中是否有此姓名for nfile in new_name:if old_name in nfile:nfname = file_path+os.sep+nfile+".jpg"print("新文件名"+nfname)os.rename(filename,nfname)breakdef main():file_path = input('輸入文件夾路徑:') # 文件夾位置try:#讀取文件夾下的所有文件List_files=[]index_file = listdir(file_path,List_files)# 讀取員工姓名和員工號,組成新的文件名new_name=[]getinfo(new_name,index_file)# 修改文件名字change_name(file_path,new_name,List_files)except Exception as e:# 打印異常信息print(e)if __name__ == '__main__':main()總結
有不對的地方希望大家可以評論留言;
歡迎編程前輩們的幫助,讓大家不再迷路!!
感謝大家的收藏,期待大家的加入,一起學習,一起交流!!
總結
以上是生活随笔為你收集整理的python批量修改文件名的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows批量修改文件名
- 下一篇: oracle数据库latch,关于Ora