Python中如何使用字典校验文件组是否全部完成扫描
问题解答
问题1:是否应该使用exec动态创建字典?
不建议使用exec动态创建唯一命名的字典,这种写法不仅会直接导致语法错误,还会带来变量命名冲突、调试难度高、可维护性差等问题。
你完全可以用嵌套字典实现你要的结构,外层字典的键是图片组名(treepicture、carpicture等),值是每个组对应的编号状态字典,结构示例如下:
group_status = { "treepicture": {"01": "found", "02": "found"}, "carpicture": {"08": "found"} }
这个结构完全匹配你的需求,不需要动态生成变量。
问题2:如何实现跨函数访问分组状态?
不需要单独为每个分组创建全局变量,仅需维护一个全局的嵌套字典即可,实现逻辑如下:
代码实现示例
1. 函数外预先定义总状态字典
# 存储所有分组的扫描状态 group_status = {}
2. 扫描函数内的逻辑替换
把你之前的exec相关代码全部替换成以下内容:
# uniqueAngle为拆分得到的分组名,timeEntry为拆分得到的编号(如01、02) if uniqueAngle not in group_status: # 新分组初始化空的状态字典 group_status[uniqueAngle] = {} # 标记当前编号已扫描到 group_status[uniqueAngle][timeEntry] = "found"
3. 扫描完成后的校验逻辑
# 遍历所有分组校验完整性 for group_name, seq_map in group_status.items(): missing_list = [] # 生成01到10的所有预期编号 for num in range(1, 11): target_seq = f"{num:02d}" if target_seq not in seq_map: missing_list.append(f"{group_name}_{target_seq}.jpg") if not missing_list: print(f"分组{group_name}:完整,所有10个文件已集齐") else: print(f"分组{group_name}:缺失以下文件:{', '.join(missing_list)}")
内容的提问来源于stack exchange,提问作者Maurice Marquis
相关产品推荐
相关产品推荐

