我这个文件夹里有2000个文件夹,
里面是不同尺寸的图片,
存储在各自的文件夹里,
怎么让他们合并归类7个文件夹
/storage/emulated/0/线稿/
编号重新命名文件
完整代码
【以下回答由 GPT 生成】
我可以为您提供一个Python脚本来解决您的问题。您可以使用这个脚本来将图片按尺寸归类并将它们合并到7个不同的文件夹中。
首先,您需要安装Pillow库,这是一个用于处理图片的常用库。您可以使用以下命令来安装它:
pip install pillow
接下来,您可以使用以下代码来完成任务:
import os
from PIL import Image
# 设置原始图片文件夹路径和目标文件夹路径
original_folder = "/storage/emulated/0/线稿/"
target_folder = "/storage/emulated/0/目标文件夹/"
# 设置尺寸分类和目标文件夹的名称
size_categories = {
(0, 200): "small",
(200, 400): "medium",
(400, 600): "large",
(600, 800): "extra large",
(800, 1000): "extra extra large",
(1000, 1200): "huge",
(1200, float("inf")): "extra huge"
}
# 创建目标文件夹
for category in size_categories.values():
os.makedirs(target_folder + category, exist_ok=True)
# 获取所有文件夹的路径
folder_names = os.listdir(original_folder)
folder_paths = [os.path.join(original_folder, folder_name) for folder_name in folder_names if os.path.isdir(os.path.join(original_folder, folder_name))]
# 遍历文件夹并移动图片到对应的尺寸分类文件夹
for folder_path in folder_paths:
for filename in os.listdir(folder_path):
file_path = os.path.join(folder_path, filename)
# 使用Pillow库打开图片并获取尺寸
try:
image = Image.open(file_path)
width, height = image.size
except:
continue
# 根据图片尺寸查找对应的分类文件夹
for size_range, category in size_categories.items():
if size_range[0] <= width <= size_range[1] or size_range[0] <= height <= size_range[1]:
target_path = os.path.join(target_folder, category, filename)
os.rename(file_path, target_path)
break
print("合并并归类完成!")
以上代码会根据设定的尺寸范围将图片归类并移动到相应的目标文件夹中。您可以根据需要修改size_categories
字典来设定不同的尺寸范围和分类名称。
注意:在运行代码之前,请确保原始文件夹中只包含您需要处理的图片,并且目标文件夹是空的或者已经备份了原始图片。此代码将重命名文件,所以请谨慎操作。
希望这能帮助到您!如果您有任何其他问题,请随时提问。
【相关推荐】
直接帮你GPT了一下,你看看是否符合要求:
以下回答部分来自GPT:
以下是一个示例代码,可以将指定目录下的 2000 个文件夹中的图片合并到 7 个文件夹中,并重命名它们。你可以根据实际情况修改代码中的目录、文件夹名称和重命名规则。
import os
import shutil
# 设置原始目录和归类目录(必须预先创建)
original_dir = '/path/to/original/dir'
classified_dir = '/path/to/classified/dir'
# 遍历原始目录中的所有文件夹
for i, folder_name in enumerate(sorted(os.listdir(original_dir))):
if not os.path.isdir(os.path.join(original_dir, folder_name)):
continue
# 获取当前文件夹的路径
folder_path = os.path.join(original_dir, folder_name)
# 遍历当前文件夹中的所有图片文件
for j, file_name in enumerate(sorted(os.listdir(folder_path))):
if not file_name.endswith('.jpg') and not file_name.endswith('.jpeg') and not file_name.endswith('.png'):
continue
# 获取当前文件的完整路径
file_path = os.path.join(folder_path, file_name)
# 计算要移动到哪个文件夹
target_folder_idx = i % 7 + 1
target_folder_name = f'folder_{target_folder_idx}'
# 在归类目录中创建目标文件夹(如果不存在)
target_folder_path = os.path.join(classified_dir, target_folder_name)
os.makedirs(target_folder_path, exist_ok=True)
# 构造新的文件名(格式:原始文件夹编号_序号.后缀)
new_file_name = f'{i + 1}_{j + 1:04d}.{file_name.split(".")[-1]}'
# 目标文件的完整路径
target_file_path = os.path.join(target_folder_path, new_file_name)
# 移动图片文件到目标文件夹,并重命名
shutil.move(file_path, target_file_path)
# 删除当前文件夹
os.rmdir(folder_path)
print(f'Deleted folder {folder_name}.')
在这个代码中,我们假设原始目录包含 2000 个文件夹,文件夹名称为数字,从 1
到 2000
。每个文件夹中包含不同尺寸的图片,格式可能为 .jpg
、.jpeg
或 .png
。我们将这些图片合并到 7 个文件夹中,并按照一定的规则重命名它们。
首先,我们遍历原始目录中的所有文件夹,对于每个文件夹我们再遍历其中的图片文件。对于每个图片文件,我们计算它应该放在哪个文件夹中,并构造新的文件名。然后将这个文件移动到目标文件夹,并重命名。
最后,我们删除原始目录中的每个文件夹。
需要注意的是,这个代码仅适用于上述特定情况,并且没有错误处理机制。如果你的情况有所不同,或者需要更加严谨的代码,请根据实际情况修改代码。