首页 > 解决方案 > 如何根据文件夹名称重命名文件名?

问题描述

我似乎无法弄清楚如何创建一个 for 循环来根据我的文件夹名称重命名我的文件..

例如。
文件夹 -2021/Category/Fruits/
文件名 -2021_Category_Fruits_Apple.jpg2021_Category_Fruits_Orange.jpg...

标签: python

解决方案


我会使用pathlib模块:

from pathlib import Path

folder = Path("d:/test") # path to your folder
files = list(folder.rglob("*.jpg")) # get all jpg files from subfolders
for f in files:
    name = "_".join(f.parts[-4:]) # the last four parts of full name
    new_file = Path(f.parent / name)
    f.rename(new_file)

实际上,实现取决于您的工作流程。这是相同代码的一个可能更智能的变体:

folder = Path("d:/test")             # path to your folder
folder_parts_len = len(folder.parts) # len(["d", "test"])
files = list(folder.rglob("*.jpg"))  # all jpg files from subfolders

for f in files:
    file_parts = f.parts[folder_parts_len:] # ["2021", "Category", "Fruits", "Apple.jpg"]
    name = "_".join(file_parts)             # "2021_Category_Fruits_Apple.jpg"
    new_file = Path(f.parent / name)
    f.rename(new_file)

推荐阅读