You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于列表名称复制图片至目标文件夹的代码失效问题

问题:按指定列表复制图片到目标文件夹无效果

想要将列表中指定的所有图片复制到目标文件夹,但运行代码后未产生任何效果。原始文件夹包含从'100.jpg'到'500.jpg'的所有图片,代码如下:

Original_folder_Path = 'directory'
Destination_folder_path = 'directory'
List = [['100.jpg',1], ['101.jpg',0],['102.jpg',0],['103.jpg',1]]
# 原始文件夹包含100.jpg到500.jpg的所有图片

import shutil
import os 

Original_folder_Path = 'directory'
Destination_folder_path = 'directory'
List = [['100.jpg',1], ['101.jpg',0],['102.jpg',0],['103.jpg',1]]

for files in glob.iglob(os.path.join(Original_folder_Path ,"*.jpg")):
    
    if '{files}.jpg' in List:
        
        shutil.copy(files, Destination_folder_path )

代码问题分析

  • 漏导入glob模块:代码使用了glob.iglob但未添加import glob语句,运行时会直接报错
  • 判断逻辑完全错误:
    • '{files}.jpg'是固定字符串,不会解析变量files的值,且files本身已是带路径的完整文件名,添加.jpg完全多余
    • 列表List的元素是子列表(如['100.jpg',1]),直接判断字符串是否在列表中永远无法匹配
  • 未利用列表中的1/0标记筛选需要复制的文件

修正后的代码

import shutil
import os 
import glob  # 补充导入glob模块

# 替换为实际的文件夹路径
Original_folder_Path = '你的原始文件夹路径'
Destination_folder_path = '你的目标文件夹路径'
# 预处理列表:提取所有标记为1的文件名
target_files = [item[0] for item in List if item[1] == 1]

# 遍历原始文件夹中的所有jpg文件
for file_path in glob.iglob(os.path.join(Original_folder_Path, "*.jpg")):
    # 获取文件的纯名称(去掉路径)
    file_name = os.path.basename(file_path)
    # 判断当前文件是否在需要复制的列表中
    if file_name in target_files:
        shutil.copy(file_path, Destination_folder_path)

修正说明

  1. 补充glob模块导入,解决运行报错问题
  2. 提前整理出需要复制的文件名列表,简化后续判断逻辑
  3. 使用os.path.basename()提取文件纯名称,和列表中的文件名精准匹配
  4. 直接判断文件名是否在目标列表中,确保逻辑正确

内容的提问来源于stack exchange,提问作者A.j

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:15:25