[問題] 檢查副檔名並重新命名

作者: s4028600 (佑)   2019-11-28 22:29:04
import imghdr
import os
root=["D:\long\Desktop"]
for path in root:
for dirPath, dirNames, fileNames in os.walk(path):
for file in fileNames:
pic_file=os.path.join(dirPath,file)
img = imghdr.what(pic_file)
#print(os.path.splitext(pic_file)[1])
if os.path.splitext(pic_file)[1].lstrip('.') != img:
#print(img,pic_file)
#print(os.path.splitext(pic_file)[0])
name=os.path.splitext(pic_file)[0]+'.'+img
print(name)
os.rename(pic_file,name)
有幾個問題
1.我所用的imghdr似乎只能辨認圖片的副檔名
它把我的txt當錯誤的檔案
有能辨識其他副檔名是否正確的包嗎
2.我用其他程式辨識的是jpg但是imghdr的辨識卻是jpeg
3.遇到非圖片的會錯誤比如txt
不過有打算用try所以算是小問題
作者: AndCycle (AndCycle)   2019-11-28 22:39:00
那個, jpg 是因為副檔名3個字這個慣例所產生的簡寫 ...
作者: s4028600 (佑)   2019-11-28 23:29:00
了解那2.的解決方法就設定其他條件好了1和3有方法嗎
作者: ZongXiu   2019-11-29 09:28:00
有試過 字串[-4:]=='.jpg' ?
作者: TuCH (謬客)   2019-11-29 09:31:00
改字串為什麼要用imghdr阿阿阿副檔名就是.split('.')[-1]吧
作者: s860134 (s860134)   2019-11-29 12:49:00
其實有 os.path 就有 os.path.splitext
作者: s4028600 (佑)   2019-11-30 03:08:00
手機要用整頁或瀏覽器才是正常的縮排感謝各位建議
作者: MARGHT   2019-12-01 13:44:00
還有pathlib可以用
作者: s4028600 (佑)   2019-12-05 04:16:00
感謝 可惜沒相關教學 好像沒辦法用
作者: max533 (向陽花)   2019-12-11 08:26:00
pathlib(限python3)推推,處理檔案以物件導向型式很方便

Links booklink

Contact Us: admin [ a t ] ucptt.com