基于列表名称复制图片至目标文件夹的代码失效问题
问题:按指定列表复制图片到目标文件夹无效果
想要将列表中指定的所有图片复制到目标文件夹,但运行代码后未产生任何效果。原始文件夹包含从'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)
修正说明
- 补充
glob模块导入,解决运行报错问题 - 提前整理出需要复制的文件名列表,简化后续判断逻辑
- 使用
os.path.basename()提取文件纯名称,和列表中的文件名精准匹配 - 直接判断文件名是否在目标列表中,确保逻辑正确
内容的提问来源于stack exchange,提问作者A.j
相关产品推荐
相关产品推荐

