os 模块提供了重命名文件和目录的函数 rename(),如果指定的路径是文件,则重命名文件;反之,如果执行的路径是目录,则重命名目录。
rename() 函数的基本语法格式如下:
os.rename(src , dst)
其中,src 参数用于指定要进行重命名的目录或文件;dst 参数用于指定重命名后的目录或文件。
例如,将 a.txt 文件(完整路径为:D:\demo\a.txt)重命名为 b.txt 文件,可以执行如下代码:
import os
os.rename("D:\\demo\\a.txt","D:\\demo\\b.txt")
print("重命名完毕")
通过执行上面代码,即可成功将位于 D:\\demo 下的 a.txt 文件重命名为 b.txt。但是,如果 rename() 函数找不到目标文件或目录,将会抛出 FileNotFoundError 异常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 2, in
os.rename("D:\\demo\\a.txt","D:\\demo\\b.txt")
FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'D:\\demo\\a.txt' -> 'D:\\demo\\b.txt'
使用 rename()函数重命名目录和重命名文件基本相同,只需要将文件路径替换为目录路径即可。例如,将 D:\demo 目录重命名为 new 目录,可以执行如下代码:
import os
os.rename("D:\\demo","D:\\new")
print("重命名完毕")
同重命名文件名一样,当 rename() 找不到要重命名的目录时,也会抛出 FileNotFoundError 异常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 2, in
os.rename("D:\\demo","D:\\new") FileNotFoundError: [WinError 2] 系统找不到指定的文件。: 'D:\\demo' -> 'D:\\new'
注意,在对目录进行重命名时,只能修改最后一级的目录名称,也就是说,只能修改目录名,而不能移动它的位置。
如果想避免出现 FileNotFoundError 异常,可以在删除文件或目录时,先判断目标文件或目录是否存在,即如果存在才执行删除操作,执行代码如下:
import os
if os.path.exists("D:\\demo\\a.txt"):
os.rename("D:\\demo\\a.txt","D:\\demo\\b.txt")
print("文件重命名完毕")
除此之外,还可以使用 try except 语句避免出现 FileNotFoundError 异常,执行代码如下:
import os
try:
os.rename("D:\\demo","D:\\new")
print("重命名完毕")
except(FileNotFoundError):
print("目录不存在")