Coding-python-标签-更新标签文件TXT中每行的类别编号

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import os

def update_class_numbers(txt_file_path, class_map):
"""
更新TXT文件中每行的类别编号,根据给定的类别映射字典。

:param txt_file_path: TXT文件的路径。
:param class_map: 字典,键是原始类别编号,值是更新后的类别编号。
"""
updated_lines = []

# 读取TXT文件
with open(txt_file_path, 'r') as file:
lines = file.readlines()

# 更新每行的类别编号
for line in lines:
parts = line.split()
class_id = int(parts[0])
if class_id in class_map:
new_class_id = class_map[class_id]
parts[0] = str(new_class_id)
updated_lines.append(' '.join(parts) + '\n')

# 写回更新后的内容到原文件
with open(txt_file_path, 'w') as file:
file.writelines(updated_lines)


txt_dir = 'datasets/clothes/train/labels'
class_map = {15:16 , 1: 2, 2: 3} # 假设你想把类别0改为1,类别1改为2,类别2改为3

# 示例使用
path_list = os.listdir(txt_dir)
path_list = [os.path.join(txt_dir, path) for path in os.listdir(txt_dir)]
# path_list = [os.path.join(txt_dir, path) for path in os.listdir(txt_dir) if path.startswith('self_')]
for path in path_list:
update_class_numbers(path, class_map)
print(path+'ok')