Python os.rename()函數:重新命名檔案或目錄

2020-07-16 10:04:56
os 模組提供了重新命名檔案和目錄的函數 rename(),如果指定的路徑是檔案,則重新命名檔案;反之,如果執行的路徑是目錄,則重新命名目錄。

rename() 函數的基本語法格式如下:

os.rename(src , dst)

其中,src 引數用於指定要進行重新命名的目錄或檔案;dst 引數用於指定重新命名後的目錄或檔案。

例如,將 a.txt 檔案(完整路徑為:D:demoa.txt)重新命名為 b.txt 檔案,可以執行如下程式碼:
import os
os.rename("D:demoa.txt","D:demob.txt")
print("重新命名完畢")
通過執行上面程式碼,即可成功將位於 D:demo 下的 a.txt 檔案重新命名為 b.txt。但是,如果 rename() 函數找不到目標檔案或目錄,將會丟擲 FileNotFoundError 異常:

Traceback (most recent call last):
  File "C:UsersmengmaDesktopdemo.py", line 2, in <module>
    os.rename("D:demoa.txt","D:demob.txt")
FileNotFoundError: [WinError 2] 系統找不到指定的檔案。: 'D:demoa.txt' -> 'D:demob.txt'


使用 rename()函數重新命名目錄和重新命名檔案基本相同,只需要將檔案路徑替換為目錄路徑即可。例如,將 D:demo 目錄重新命名為 new 目錄,可以執行如下程式碼:
import os
os.rename("D:demo","D:new")
print("重新命名完畢")
同重新命名檔名一樣,當 rename() 找不到要重新命名的目錄時,也會丟擲 FileNotFoundError 異常:

Traceback (most recent call last):
  File "C:UsersmengmaDesktopdemo.py", line 2, in <module>
    os.rename("D:demo","D:new") FileNotFoundError: [WinError 2] 系統找不到指定的檔案。: 'D:demo' -> 'D:new'

注意,在對目錄進行重新命名時,只能修改最後一級的目錄名稱,也就是說,只能修改目錄名,而不能移動它的位置。


如果想避免出現 FileNotFoundError 異常,可以在刪除檔案或目錄時,先判斷目標檔案或目錄是否存在,即如果存在才執行刪除操作,執行程式碼如下:
import os
if os.path.exists("D:demoa.txt"):
    os.rename("D:demoa.txt","D:demob.txt")
    print("檔案重新命名完畢")
除此之外,還可以使用 try except 語句避免出現 FileNotFoundError 異常,執行程式碼如下:
import os
try:
    os.rename("D:demo","D:new")
    print("重新命名完畢")
except(FileNotFoundError):
    print("目錄不存在")