python - 如何根据文件夹名称重命名文件名?
问题描述
我似乎无法弄清楚如何创建一个 for 循环来根据我的文件夹名称重命名我的文件..
例如。
文件夹 -2021/Category/Fruits/
文件名 -2021_Category_Fruits_Apple.jpg
等2021_Category_Fruits_Orange.jpg
...
解决方案
我会使用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)
推荐阅读
- ruby - 什么是 Ruby 的 bsearch find-minimum 和 find-any 行为?
- gitlab-ci - 如何在 gitlab-ci 脚本中执行 git 命令
- javascript - 相机 LED 灯未在 JavaScript Web 应用程序中运行
- python - _csv.Error:迭代器应该返回字符串,而不是 int(您是否以文本模式打开文件?) sqlalchemy
- java - 在开关中使用滑行(在 DataFakeGenerator 类中)
- python - 根据第二个更新数据框中的行
- php - 我有什么地方可以添加刷新标题而不会导致循环?
- python-2.7 - 如何迭代目标函数
- linux - 性能:无法跟踪 tp->snd_cwnd_clamp
- tensorflow - 插件的数据输入格式