1 回答

TA貢獻1856條經驗 獲得超11個贊
您的代碼只是比必要的復雜一點,并且您沒有應用正確的方法從路徑和文件名中創建文件路徑。而且我認為您不應該刪除沒有原始文件的文件(即雖然名稱看起來像但不重復的文件)。
嘗試這個:
for file_name in file_list:
if "(1)" not in file_name:
continue
original_file_name = file_name.replace('(1)', '')
if not os.path.exists(os.path.join(file_path, original_file_name):
continue # do not remove files which have no original
os.remove(os.path.join(file_path, file_name))
但是請注意,這對于其中多次出現的文件不能正常工作(1)
,并且(2)
根本不會處理具有或更高數字的文件。所以我真正的提議是這樣的:
在給定開始下方的整個目錄樹中列出所有文件(用于
os.walk()
獲取此信息),然后按大小對所有文件進行排序,然后
線性遍歷此列表,識別雙打(此列表中的鄰居)和
產生每個這樣的雙組(即一個小的文件列表(通常只有兩個),它們是相同的)。
當然,您應該檢查這幾個文件的內容,然后確保其中的兩個文件大小相同而不相同。如果您確定您有一組相同的名稱,請刪除除名稱最簡單的名稱以外的所有名稱(例如,沒有后綴(1)
等)。
順便說一下,我會調用file_path
類似dir_path
or的東西root_dir_path
(因為它是一個目錄和一個完整的路徑)。
添加回答
舉報