2017-04-19 121 views
0

我已經做了一些搜索,但看不到如何實際編碼。我是Python新手,並不確定我應該使用什麼方法來嘗試執行此操作。刪除部分文件名

我有一些我想重命名的文件。不幸的是,文件擴展名的部分永遠不會相同,只想刪除它。

文件名是一樣AC_DC - 批駁得一無是處(官方視頻) - UKwVvSleM6w .MP3

任何幫助,將不勝感激。

+0

您可以使用正則表達式' - (\ w *)。mp3'來查找要刪除的子字符串的匹配項。和[os.rename](https://docs.python.org/3/library/os.html#os.rename)用新名稱重命名該文件 – smitrp

回答

0

由於這看起來像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在文件名的末尾。

+0

感謝您的幫助,這是我到目前爲止,想知道是否有辦法找到' - ',然後從那裏刪除.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) –

+0

嘿@JamieSpake,我擴展了我的答案。 –