吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 811|回复: 10
收起左侧

[经验求助] 4个不同文件夹,每个文件夹500张图,怎么生成500个文件夹,每个文件夹里有4张不同...

[复制链接]
cbbfo1 发表于 2024-3-29 20:46
25吾爱币
4个不同文件夹,每个文件夹500张图,怎么生成500个文件夹,每个文件夹里有4张不同的图?

现在有  黄白绿黑 4个文件夹,每个文件里有对应颜色的图500张,怎么归类成500个文件夹,每个文件夹里黄白绿黑个一张图?

求软件!

最佳答案

查看完整内容

[mw_shl_code=python,true]import os import shutil import itertools # 源文件夹路径 source_folders = { 'yellow': 'path/to/yellow_folder', 'white': 'path/to/white_folder', 'green': 'path/to/green_folder', 'black': 'path/to/black_folder' } # 目标文件夹的基础路径 target_base_path = 'path/to/target_folder' # 确保目标文件夹存在 if not os.p ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

JackLei 发表于 2024-3-29 20:46
[Python] 纯文本查看 复制代码
import os  
import shutil  
import itertools  
  
# 源文件夹路径  
source_folders = {  
    'yellow': 'path/to/yellow_folder',  
    'white': 'path/to/white_folder',  
    'green': 'path/to/green_folder',  
    'black': 'path/to/black_folder'  
}  
  
# 目标文件夹的基础路径  
target_base_path = 'path/to/target_folder'  
  
# 确保目标文件夹存在  
if not os.path.exists(target_base_path):  
    os.makedirs(target_base_path)  
  
# 获取每个文件夹的图片列表  
image_lists = {color: os.listdir(folder) for color, folder in source_folders.items()}  
  
# 检查每个文件夹是否都有500张图片  
for color, images in image_lists.items():  
    if len(images) != 500:  
        raise ValueError(f"Folder {color} does not contain 500 images.")  
  
# 生成500个不同的图片组合  
for i in range(500):  
    # 选择四张不同的图片(每个颜色一张)  
    images_to_copy = {color: image_lists[color].pop(0) for color in source_folders}  
      
    # 创建新的目标文件夹  
    target_folder = os.path.join(target_base_path, f'folder_{i+1}')  
    os.makedirs(target_folder)  
      
    # 复制图片到新文件夹  
    for color, image in images_to_copy.items():  
        source_path = os.path.join(source_folders[color], image)  
        target_path = os.path.join(target_folder, image)  
        shutil.copy2(source_path, target_path)  
  
# 脚本执行完毕,所有图片已经归类完成  
print("All images have been categorized into 500 folders with 4 different images each.")
几度夕阳红 发表于 2024-3-29 21:19
 楼主| cbbfo1 发表于 2024-3-29 21:21
几度夕阳红 发表于 2024-3-29 21:25

建一个 文件夹,然后选中黄 白  绿 黑 文件里第一张图片 复制进去,   然后每次加一  执行500次就好了
JackLei 发表于 2024-3-29 21:46
[PowerShell] 纯文本查看 复制代码
要从4个不同的文件夹中各自取一张图,并生成500个新的文件夹,每个新文件夹中包含这4张图,你可以使用批处理脚本结合PowerShell的功能来实现。下面是一个示例脚本,它使用CMD批处理来调用PowerShell命令,从而完成这个任务:

batch
@echo off  
setlocal enabledelayedexpansion  
  
:: 设置源文件夹路径  
set "yellow_folder=path\to\yellow_folder"  
set "white_folder=path\to\white_folder"  
set "green_folder=path\to\green_folder"  
set "black_folder=path\to\black_folder"  
  
:: 设置目标文件夹基础路径  
set "target_base_path=path\to\target_folder"  
  
:: 确保目标文件夹存在  
if not exist "%target_base_path%" mkdir "%target_base_path%"  
  
:: 获取每个源文件夹中的图片数量,确保都是500张  
for %%f in (%yellow_folder% %white_folder% %green_folder% %black_folder%) do (  
    set "count=%%~zf"  
    if !count! neq 500 (  
        echo Error: Folder %%~nxf does not contain 500 images.  
        exit /b 1  
    )  
)  
  
:: 生成500个新的文件夹,并从每个源文件夹中复制一张图片到这些新文件夹中  
for /L %%i in (1,1,500) do (  
    :: 创建目标文件夹  
    set "target_folder=%target_base_path%\folder_%%i"  
    mkdir "!target_folder!"  
      
    :: 使用PowerShell从每个源文件夹中随机选择一张图片并复制到目标文件夹  
    powershell -Command "$yellow = Get-ChildItem -Path '!yellow_folder!' | Get-Random; $white = Get-ChildItem -Path '!white_folder!' | Get-Random; $green = Get-ChildItem -Path '!green_folder!' | Get-Random; $black = Get-ChildItem -Path '!black_folder!' | Get-Random; Copy-Item -Path @($yellow.FullName, $white.FullName, $green.FullName, $black.FullName) -Destination '!target_folder!'"  
)  
  
echo Done.  
endlocal
这个脚本首先检查每个源文件夹是否确实包含500张图片。然后,它使用一个循环来创建500个新的目标文件夹。对于每个新文件夹,它使用PowerShell命令从每个源文件夹中随机选择一张图片,并将这些图片复制到新的目标文件夹中。

请注意以下几点:

替换path\to\...为实际的文件夹路径。
这个脚本使用Get-Random来从每个源文件夹中随机选择一张图片。如果你想要按照某种顺序选择图片(比如按照文件名排序),你需要修改PowerShell命令中的图片选择部分。
如果图片的文件名非常长或者有特殊字符,可能需要在脚本中进行适当的转义或处理。
请确保你的系统安装了PowerShell,并且批处理脚本有权限执行PowerShell命令。
在运行这个脚本之前,请务必备份你的图片,以防万一脚本执行过程中出现错误导致数据丢失。
 楼主| cbbfo1 发表于 2024-3-29 22:13
@echo off  
setlocal enabledelayedexpansion  
  
REM 定义原始文件夹的路径和新文件夹的存储路径  
set "YELLOW_FOLDER=F:\test\黄"  
set "WHITE_FOLDER=F:\test\白"  
set "GREEN_FOLDER=F:\test\绿"  
set "BLACK_FOLDER=F:\test\黑"  
set "DESTINATION_BASE_FOLDER=classified_photos"  
  
REM 确保新文件夹的基目录存在  
if not exist "%DESTINATION_BASE_FOLDER%" mkdir "%DESTINATION_BASE_FOLDER%"  
  
REM 设置初始计数器和循环变量  
set "COUNT=1"  
:LOOP  
if %COUNT% gtr 500 goto ENDLOOP  
  
REM 构造新文件夹的名称  
set "NEW_FOLDER=%DESTINATION_BASE_FOLDER%\set_!COUNT:~-3!"  
mkdir "!NEW_FOLDER!"  
  
REM 复制每种颜色的第 COUNT 张图片到新文件夹中  
copy /Y "%YELLOW_FOLDER%\!COUNT!.png" "!NEW_FOLDER!\yellow.png"  
copy /Y "%WHITE_FOLDER%\!COUNT!.png" "!NEW_FOLDER!\white.png"  
copy /Y "%GREEN_FOLDER%\!COUNT!.png" "!NEW_FOLDER!\green.png"  
copy /Y "%BLACK_FOLDER%\!COUNT!.png" "!NEW_FOLDER!\black.png"  
  
REM 增加计数器并继续循环  
set /A "COUNT+=1"  
goto LOOP  
  
:ENDLOOP  
echo Photos have been classified and copied to the new folders.  
pause
 楼主| cbbfo1 发表于 2024-3-29 22:13
JackLei 发表于 2024-3-29 21:42
[mw_shl_code=python,true]import os  
import shutil  
import itertools  

哈哈 没按py环境,我忘了有ai,直接叫ai帮我写bat代码,不过还是谢谢你
h7867 发表于 2024-3-29 22:14
要实现您所描述的重组图片操作,可以编写一个脚本来遍历现有的四个文件夹(黄、白、绿、黑),并从每个文件夹中随机选择一张图片,将这四张图片复制到新的500个子文件夹中。以下是大致步骤:

1. 创建500个新文件夹,可以按数字编号,如`folder_001`至`folder_500`。

2. 对于每一个新创建的文件夹:
   - 随机选择“黄”文件夹中的1张图片,并复制到当前新文件夹内。
   - 随后同样从“白”、“绿”和“黑”文件夹中各随机选取1张图片复制到当前新文件夹内。

3. 确保每次选择都是随机的,这样可以保证每个新文件夹内的4张图片组合各异。

下面是一个Python示例代码片段,假设所有原始图片都在同一级目录下,并且图片格式都是`.jpg`:

```python
import os
import random
import shutil

# 原始文件夹路径
original_folders = ['黄', '白', '绿', '黑']
source_base_path = '/path/to/original/folders/'

# 目标文件夹路径及基础名
target_folder_base = '/path/to/target/folders/'
target_folder_count = 500

# 遍历目标文件夹数量创建新文件夹
for i in range(1, target_folder_count + 1):
    folder_name = f'folder_{str(i).zfill(3)}'
    target_folder_path = os.path.join(target_folder_base, folder_name)
    os.makedirs(target_folder_path, exist_ok=True)

    # 从每个原始文件夹中随机选择一张图片
    for color_folder in original_folders:
        source_folder = os.path.join(source_base_path, color_folder)
        images = [os.path.join(source_folder, img) for img in o
shuangmulin 发表于 2024-3-29 22:15
学习一波
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-16 03:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表