批量改動檔名 使用python

2021-10-11 20:54:55 字數 2885 閱讀 4675

強迫症又犯了系列。。。

手機記憶體不夠,遂將手機的**都轉到了電腦上。手機是mi 8se,miui 12.0.2。匯入電腦後的檔名是這樣的,電腦是win10系統,後面的**也都是win10下的。

挑乙個檔名來看一下命名規則:

強迫症的我覺得img標籤和拍攝的時分秒對我來說並沒什麼用,可以刪了,然後留下拍照的日期就可,如果在那一天拍了好幾張**,標上號就可以,簡單明瞭。

理想中的命名:

下面,進行**階段:

首先,估計要用到os庫和正則庫re,os用來處理路徑和重新命名,re可以用來匹配日期。

後面的思路就是

將要處理的路徑存入到 path 中,path下就是**;

將路徑下的檔名用os.listdir(path)獲取到並放到列表f_name中;

初始化 day_list為空和計標號的變數n = 0;

使用enumerate遍歷列表f_name,使用os.path.join(path,name)將path和檔名進行拼接,能得到img的完整路徑;

對每乙個檔名進行正則匹配,匹配的目標是20201211這種的日期,將匹配到的資料存入data,可以使用data.group()訪問到日期;

然後對這個匹配到的日期進行判斷,判斷依據是它是否存在於日期列表day_list中;

如果這個日期不在day_list中,即是第一次出現,則可以將其存入day_list中,並用os.rename()來重新命名剛剛匹配到的檔名就可,

如果這個日期不是第一次出現,它在日期列表中,就用「日期_n.jpg」來命名。

整個**如下,有注釋。

#匯入模組

import os

import re

path = r'e:\...\新建資料夾'

#輸入路徑

f_name = os.listdir(path)

#獲取路徑下的檔名

#print(f_name) #可以列印看看檔名是否正確

day_list =

#存放時間的列表

n =0

#計數的變數

#進行遍歷檔案

for i,name in

enumerate

(f_name)

: new_path = os.path.join(path,name)

#路徑和檔名拼接

#print(new_path) #可以列印看看是否正確

data = re.search(r"(\d\d\d)"

,new_path)

#正則匹配日期

#print(data.group()) #可列印看是否正確

if data.group(

)not

in day_list:

#如果日期不在day_list中))

#將日期存入day_list中

#重新命名

n =0#計數歸零

else

:#日期在day_list中

n +=

1#計數器加 1

#重新命名

print

("end"

)#重新命名完成後輸出end

這個**在我測試的時候發現有個小問題,如果出現如下圖的情況,檔案中已經存在「20200905_0.jpg」這個檔案,但是在用os.listdir(path)的時候,「20200905_0-副本.jpg」是排在「20200905_0.jpg」的前面的,所以遍歷的時候會先遍歷「20200905_0-副本.jpg」,給它重新命名時,要用「20200905_0.jpg」命名,而「20200905_0.jpg」已經存在了,只不過沒有遍歷到,所以這個時候就會報錯。

[winerror 183] 當檔案已存在時,無法建立該檔案。: 'e:\\...\\test\\20200905_0 - 副本.jpg' -> 'e:\\...\\test\\20200905_0.jpg'

這種問題是存在的,**還需完善(時間關係,下次再修改)。

這個**的第一版本是這樣的:

#匯入模組

import os

path = r'e:\...\test'

#輸入你的路徑

f_name = os.listdir(path)

#獲取路徑下的檔名

#print(f_name) #可以列印看看檔名是否正確

#進行遍歷檔案

for i,name in

enumerate

(f_name)

: new_path = os.path.join(path,name)

#路徑和檔名拼接

#print(new_path) #可以列印看看是否正確

#重新命名

print

("end"

)#重新命名完成後輸出end

使用python批量修改檔名

在工作中有時候會遇到多個檔名格式不對的情況,需要一一修改,例如從test1.py,test2.py,testn.py改為test 1.py,test 2.py,test n.py的情況,如果檔案數量少手動改改就算了,但是檔案多的話,就不想手動改了,我現在本著重複的事情盡量用 實現,就想著肯定可以通過...

python批量修改檔名

修改前 flv檔案是從rar檔案中解壓出來的。由於英文不好,並且有的flv檔案的名字並不十分清晰明了,所以打算將flv檔案名字改為相應的rar檔案的名字。僅供參考,新手勿噴 主要使用了python中的re 正規表示式 和os模組中的函式。coding gb2312 import os import ...

Python批量更改檔名

由於後台資料有好多,但是文案提供過來的命名全部沒有按照格式來命名,python這麼強大的語言,肯定是能夠處理這個問題的,於是我就寫了乙個小指令碼批量改檔名。我的思路是這樣的,在當前檔案下建立乙個新的目錄newfile,然後把所有的檔案拷貝過去重新命名一下就行了 文案提供過來的全部都是1.jpg,2....