我已經做了一些搜索,但看不到如何實際編碼。我是Python新手,並不確定我應該使用什麼方法來嘗試執行此操作。刪除部分文件名
我有一些我想重命名的文件。不幸的是,文件擴展名的部分永遠不會相同,只想刪除它。
文件名是一樣AC_DC - 批駁得一無是處(官方視頻) - UKwVvSleM6w .MP3
任何幫助,將不勝感激。
我已經做了一些搜索,但看不到如何實際編碼。我是Python新手,並不確定我應該使用什麼方法來嘗試執行此操作。刪除部分文件名
我有一些我想重命名的文件。不幸的是,文件擴展名的部分永遠不會相同,只想刪除它。
文件名是一樣AC_DC - 批駁得一無是處(官方視頻) - UKwVvSleM6w .MP3
任何幫助,將不勝感激。
由於這看起來像youtube-dl的結果,「隨機」子字符串很可能是唯一的視頻ID,在我的經驗中,它總是有11個字符長。但是,它可以包含破折號(-
),所以smitrp建議的正則表達式並不總是有效。
我用這個 「髒」 的解決方法:
>>> original_name="AC_DC - Shot Down In Flames (Official Video)-UKwVvSleM6w.mp3"
>>> new_name=original_name[:-16]+".mp3"
>>> new_name
'AC_DC - Shot Down In Flames (Official Video).mp3'
編輯:
如果你真的,真的想找到 「-XXXX」 -portion,看看str.rfind()。這將幫助您找到最後一個破折號(-
)的索引,您可以直接使用該字符串的切片符號。
免責聲明:
這將提供錯誤的結果,如果視頻ID包含一個破折號,例如在這裏:https://www.youtube.com/watch?v=7WVBEB8-wa0
這時你會發現最後的衝刺,刪除-wa0
並留下-7WVBEB8
在文件名的末尾。
感謝您的幫助,這是我到目前爲止,想知道是否有辦法找到' - ',然後從那裏刪除.folder = r「c:\ users \ jamie \ mp3 \ acdc」 import os debug = True for root,dirs,filenames in os在文件名中 爲文件名:.walk(文件夾) FULLPATH = os.path.join(根,文件名) filename_split = os.path.splitext(FULLPATH) filename_zero,fileext = filename_split 如果調試: 打印(filename_zero [:-16] + fileext) else: os.rename(fullpath,filename_zero [: - 16] + fileext) –
嘿@JamieSpake,我擴展了我的答案。 –
您可以使用正則表達式' - (\ w *)。mp3'來查找要刪除的子字符串的匹配項。和[os.rename](https://docs.python.org/3/library/os.html#os.rename)用新名稱重命名該文件 – smitrp