【发布时间】:2021-10-26 22:05:12
【问题描述】:
我正在尝试根据其中包含的文件夹/文件批量重命名文件夹(然后将每个路径末尾的图像文件移动到它们各自的模型/颜色文件夹目录中)。 每个文件夹/文件都有类似的 MODEL_COLOR 命名约定。
下面的代码有效,但似乎只在第一个文件夹上正常工作,换句话说,文件夹被正确重命名,但最后一段代码似乎正在获取包含图像的文件夹并将其移动到相应的路径,而不是专门将图像移动到相应的路径并删除它们最初所在的文件夹。
在循环迭代的第一个文件夹中,它实际上将图像移动到正确的 Model > Color 目录中,但在之后的所有文件夹中,它似乎将包含图像的 文件夹 移动到正确的Model > Color 目录,而不是仅仅将图片单独移动到对应目录中。
查看论坛后,我看到了类似的问题,即在更改目录或删除某些实例时,由于在循环过程中初始设置发生更改(即删除或重命名路径的一部分),循环无法正确迭代迭代时)。我很确定这是一个简单的解决方案,但我似乎找不到最有效的解决方案。
标准文件夹名称:
- CL4003IN_45F
- CL4003IN_56F
- CL40157U_01D
- CL40157U_52H
import glob, os, shutil
folder = 'C:\\testing'
# create new folder directory based on Model/Color [is working, but moves file_path into base directory]
# arr = []
for file_path in glob.glob(os.path.join(folder, '*_*')):
new_dir = file_path.rpartition('_')[0]
new_subdir = file_path.rpartition('_')[2]
try:
os.mkdir(os.path.join(new_dir, new_subdir))
except WindowsError:
# Handle the case where the target dir already exist.
pass
shutil.move(file_path, os.path.join(new_dir, new_subdir))
# arr.append(file_path)
【问题讨论】:
-
为什么每行都多加一层缩进?
-
这是一个复制/粘贴错误,刚刚修复它。谢谢!
标签: python python-3.x directory glob shutil