強迫症又犯了系列。。。
手機記憶體不夠,遂將手機的**都轉到了電腦上。手機是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....