示例:初始数据集已标注了3类文件,但后期只需要检测其中2类,因此需要删除1类标签
以下代码演示了:遍历文件(train/test/val)下的txt标签文件,将原本2类标签(0,1,2)中的’1‘类型标签删除,操作后标签中只有(0,2)类型标签,再此基础上将’2‘类型标签rename为’1‘类型
初始标签文件:
脚本1运行效果:
脚本2运行效果:
脚本1(delete-1.py)
import os
# 定义一个函数,用于处理单个文件
def process_txt_file(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
# 过滤掉以"1"开头的行
filtered_lines = [line for line in lines if not line.strip().startswith("1")]
with open(file_path, 'w') as file:
file.writelines(filtered_lines)
# 定义一个函数,用于处理整个文件夹
def process_folder(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".txt"):
file_path = os.path.join(root, file)
process_txt_file(file_path)
print(f"Processed: {file_path}")
# 指定要处理的文件夹目录
folder_to_process = "your_folder_path_here" # 替换成你的文件夹路径
# 调用函数来处理文件夹中的txt文件
process_folder(folder_to_process)
脚本2(rename-2.py)
import os
import re
# 定义一个函数,用于处理单个文件
def process_txt_file(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
modified_lines = []
for line in lines:
if re.match(r'^2', line.strip()):
# 找到以2开头的行,替换第一个数字为1
parts = line.strip().split(' ')
if len(parts) > 1:
parts[0] = '1'
modified_line = ' '.join(parts)
modified_lines.append(modified_line + '\n')
else:
# 行中只有一个数字2,不作处理
modified_lines.append(line)
else:
modified_lines.append(line)
with open(file_path, 'w') as file:
file.writelines(modified_lines)
# 定义一个函数,用于处理整个文件夹
def process_folder(folder_path):
for root, dirs, files in os.walk(folder_path):
for file in files:
if file.endswith(".txt"):
file_path = os.path.join(root, file)
process_txt_file(file_path)
print(f"Processed: {file_path}")
# 指定要处理的文件夹目录
folder_to_process = "your_folder_path_here" # 替换成你的文件夹路径
# 调用函数来处理文件夹中的txt文件
process_folder(folder_to_process)