在Python中更改文件名主要通过os
模块和pathlib
模块实现,具体方法如下:
一、使用os
模块修改文件名
-
读取文件列表
使用
os.listdir()
获取指定目录下的文件和文件夹列表。例如:import os files = os.listdir("/path/to/directory") print(files)
-
重命名文件
使用
os.rename()
函数修改文件名,需提供原文件名和新文件名。例如:os.rename("old_name.txt", "new_name.txt")
若文件名包含路径,需先拼接完整路径:
old_path = os.path.join("/path/to/directory", "old_name.txt") new_path = os.path.join("/path/to/directory", "new_name.txt") os.rename(old_path, new_path)
-
批量重命名
可结合循环和条件判断实现批量修改,例如按文件扩展名筛选并重命名:
import os def batch_rename(folder_path, prefix="", suffix="", file_extension=None): files = os.listdir(folder_path) if file_extension: files = [f for f in files if f.endswith(file_extension)] for i, file in enumerate(files, start=1): new_name = f"{prefix}{i}{suffix}{file_extension}" os.rename(os.path.join(folder_path, file), os.path.join(folder_path, new_name))
二、使用pathlib
模块修改文件名
pathlib
模块(Python 3.4+)提供面向对象的路径操作,更简洁易用:
-
获取文件名
from pathlib import Path file_path = Path("/path/to/file.txt") file_name = file_path.name print(file_name) # 输出: file.txt
-
重命名文件
file_path = Path("/path/to/file.txt") new_file_path = file_path.with_name("new_file.txt") file_path.rename(new_file_path)
-
批量重命名
结合列表推导式和
Path
对象实现:from pathlib import Path def batch_rename(folder_path, prefix="", suffix="", file_extension=None): path = Path(folder_path) files = list(path.glob(f'*{file_extension}')) for i, file_path in enumerate(files, start=1): new_name = f"{prefix}{i}{suffix}{file_extension}" new_file_path = file_path.with_name(new_name) file_path.rename(new_file_path)
三、注意事项
-
路径处理 :修改文件名前需确保路径正确,避免因路径错误导致失败。
-
异常处理 :批量操作时建议添加异常处理,例如使用
try-except
捕获重命名失败的情况。 -
文件顺序 :
os.listdir()
返回的文件顺序可能与实际存储顺序不同,若需保持顺序,可结合sorted()
函数排序。
以上方法可根据具体需求选择使用,pathlib
模块因语法简洁和功能强大,推荐优先使用。