import os ''' # 统计合法的数据 # 1。 有obj 在 ../gt_mesh_ 下面有 {id}.obj # 2. 有点云 在 ../gt_point 下面有 {id}_50k.xyz # 3. 有二面角 在 ../gt_point 下面有 {id}.ptangle 保存id到 ../name_list.txt ''' def get_valid_ids(check_pt_exists=False): # 定义路径 mesh_dir = "../gt_mesh" point_dir = "../gt_point" pt_dir = "../output_data" # 获取所有可能的ID obj_files = [f for f in os.listdir(mesh_dir) if f.endswith('.obj')] potential_ids = [f[:-4] for f in obj_files] # 去掉.obj后缀 valid_ids = [] for id in potential_ids: # 检查三个条件 has_obj = os.path.exists(os.path.join(mesh_dir, f"{id}.obj")) has_xyz = os.path.exists(os.path.join(point_dir, f"{id}_50k.xyz")) has_ptangle = os.path.exists(os.path.join(point_dir, f"{id}.ptangle")) has_pt = not check_pt_exists or os.path.exists(os.path.join(pt_dir, f"{id}.pt")) if has_obj and has_xyz and has_ptangle and has_pt: valid_ids.append(id) return valid_ids if __name__ == "__main__": valid_ids = get_valid_ids(check_pt_exists=True) print(f"找到 {len(valid_ids)} 个有效ID:") # 保存到文件 with open("../name_list.txt", "w") as f: for id in valid_ids: print(id) # 控制台输出 f.write(f"{id}\n") # 写入文件 print("结果已保存到 ../name_list.txt")