簡體   English   中英

當唯一的區別是大寫字母時,為什么os.rename不重命名文件?

[英]Why is os.rename not renaming files when the only difference is capitalization?

為什么這個基本的重命名腳本沒有做什么? 只是嘗試將每個單詞的首字母大寫。

import glob
import os

for filename in glob.glob("**/*.mp3", recursive = True):
    withcap = str(filename).title()

    print("nc " +(filename))
    print("wc " +(withcap))

    os.rename(filename, withcap)

打印輸出正確,但是os.rename沒有任何反應?

輸出:

nc BLOOD COMMAND - Return Of The Arsonist [Clean].mp3
wc Blood Command - Return Of The Arsonist [Clean].Mp3

如果您使用不區分大小寫的文件系統(例如Windows),則可能會發生這種情況,其中原始名稱和目標名稱都已經向我們顯示了現有名稱並指向同一文件。

一種解決方法是簡單地通過一個臨時名稱進行重命名,該臨時名稱的區別在於大小寫:

for filename in glob.glob("**/*.mp3", recursive = True):
    withcap = str(filename).title()
    os.rename(filename, withcap+'.tmp')
    os.rename(withcap+'.tmp', withcap)

如注釋中所述,原因是您正在使用不區分大小寫的文件系統。 它認為新舊名稱是相同的,因此“重命名”成為空操作。

您必須為每個文件進行兩次重命名:首先重命名為不同的臨時名稱; 然后改為大寫的實際名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM