对标注文件夹进行清洗
一、前言
很多时候使用了Ai标注后,很多类别和我们需要的不一样。
比如有些框没有选定类别,所以标注的时候这个框就是-1,这在训练前是需要清洗的
还有要删除空的标注文件的需求
为此我简单写了一下清洗文件夹内全部txt文件的程序
二、清洗程序
import os
'''
输入文件夹地址:
输出该文件夹下全部文件的相对地址
'''
def getFilePath(fileDo):
allFilePath=[]
for file in os.listdir(fileDo):
allFilePath.append(os.path.join(fileDo, file))
#print(file)
return allFilePath
'''
输入包含文件地址的列表:
函数对文件进行遍历执行以下指令
1、删掉类别为-1的项
2、将其他类别都修改为指定值k
3、删除空的的文件
'''
def PreData(allFilePath,k):
for FilePath in allFilePath:
if FilePath.endswith('txt'):
tem = [] # 将类别不为-1的项保存起来
with open(FilePath, 'r', encoding='utf-8') as f:
while True:
line = f.readline()
if line == '':
break
if line[0] != '-': #完成删除类别为-1的任务
line=str(k)+line[1:]
tem.append(line)
else:
print(line)
#如果,该文本,可正常插入的为空,就删除该文件
if len(tem)==0:
os.remove(FilePath)
print('删除文件'+FilePath)
#部为空则写入
else:
with open(FilePath, 'w', encoding='utf-8') as w:
for line in tem:
w.write(str(line))#将之前缓存的值重写进去
def main():
#fileDo = './人类/人类-百度-标签数据'
fileDo=input('请输入要清洗文件夹的相对地址:')
#print(fileDo)
# 输出该文件夹下,全部文件的相对地址并返回给变量
allFilePath=getFilePath(fileDo)
print('地址内全部文件如下:')
print(allFilePath)
# 对进行文件夹进行规范化
PreData(allFilePath,3)
if __name__ =='__main__':
main()