本帖最后由 weiyepin 于 2026-5-6 16:26 编辑
[Python] 纯文本查看 复制代码 import os
import shutil
def rename_files_by_folder(root_path):
# 遍历目标路径下的所有子目录
for folder_name in os.listdir(root_path):
folder_path = os.path.join(root_path, folder_name)
# 确保处理的是文件夹
if os.path.isdir(folder_path):
files = os.listdir(folder_path)
# 过滤掉可能的隐藏文件(如 .DS_Store)
files = [f for f in files if not f.startswith('.')]
if len(files) == 1:
old_file_name = files[0]
# 获取文件的后缀名
file_ext = os.path.splitext(old_file_name)[1]
# 构建新的文件名:文件夹名 + 原后缀
new_file_name = folder_name + file_ext
old_file_path = os.path.join(folder_path, old_file_name)
new_file_path = os.path.join(folder_path, new_file_name)
try:
os.rename(old_file_path, new_file_path)
print(f"成功:'{folder_name}' 文件夹中的文件已重命名为 '{new_file_name}'")
except Exception as e:
print(f"错误:重命名 '{folder_name}' 失败,原因:{e}")
elif len(files) == 0:
print(f"提示:'{folder_name}' 是空文件夹,跳过。")
else:
print(f"提示:'{folder_name}' 中有多个文件,为安全起见已跳过。")
if __name__ == "__main__":
# 在这里输入你的目标根目录路径
target_directory = r'C:\你的文件夹路径'
rename_files_by_folder(target_directory)
使用说明与建议
路径设置:请将代码中 target_directory 修改为你实际存放这些文件夹的父目录。建议使用 r'C:\path\to\your\folder' 这种原始字符串格式,避免反斜杠转义问题。
安全性:代码中加入了 len(files) == 1 的判断,如果某个文件夹里意外有多个文件,它会跳过处理,防止误删或覆盖。
强烈建议:在正式运行前,先对文件夹做一个备份,或者先用少量文件夹进行测试。
扩展性:如果你希望重命名后的文件同时移动到同一个目录下(而不是留在各自文件夹里),可以在 os.rename 之后加一行 shutil.move。
这个脚本运行效率很高,处理几百个文件夹也就一瞬间的事。如果有其他逻辑调整需求(比如要在名字后面加序号),随时告诉我。 |