import os
path = "F:/train_final/imgs/"
print(path)
files = os.listdir(path)
# print(files)
for file in files:
filename = os.path.basename(file)
print(filename)
if filename.endswith('txt'):
print(path + filename)
size = os.path.getsize(path + filename)
print(size)
if size == 0:
print('文件是空的')
else:
fileopen = open(path + filename, 'r+')
print(filename)
# for line in fileopen.readlines():
# line = line.strip() # 去掉每行头尾空白
# line_split = line.split()
# # print(line_split[3:])
# line = [float(x) for x in line_split]
line = [line.strip() for line in fileopen.readlines()]
# line = line.strip() # 去掉每行头尾空白
line1 = [] # 外形1
line2 = [] # 污染2
for i in range(0, len(line)):
if line[i][0] == '1':
print(line[i])
line1.append(line[i])
if line[i][0] == '2':
print(line[i])
line2.append(line[i])
print(" line1 内容:", line1)
# nnn = line1[0].split(' ')
print(" line2 内容:", line2) # 有空的判断
# for i in line2:
# nnn = line1[i].split(' ')
if line2:
print("line2_______start")
print(line2)
newline2 = []
for line22 in line2:
print(line22)
nnn = line22.split(' ')
line22_new = [float(x) for x in nnn]
print(line22_new)
x2_center = line22_new[1]
y2_center = line22_new[2]
w2 = line22_new[3]
h2 = line22_new[4]
# print(type(h2))
x1 = x2_center - w2/2
y1 = y2_center - h2/2
x2 = x2_center + w2/2
y2 = y2_center + h2/2
print("line22:", line22_new)
for line11 in line1:
nnn = line11.split(' ')
line11_new = [float(x) for x in nnn]
print("line11:", line11_new)
x1_center = line11_new[1]
y1_center = line11_new[2]
w1 = line11_new[3]
h1 = line11_new[4]
x3 = x1_center - w1 / 2
y3 = y1_center - h1 / 2
x4 = x1_center + w1 / 2
y4 = y1_center + h1 / 2
if (x4 > x1 and x2 > x3) and (y4 > y1 and y2 > y3):
print("11::", line11_new[1])
print("22::", line22_new[1])
line22_new[1] = line11_new[1]
line22_new[2] = line11_new[2]
line22_new[3] = line11_new[3]
line22_new[4] = line11_new[4]
line22_new[0] = int(line22_new[0])
ls2 = [str(i) for i in line22_new]
ls3 = ' '.join(ls2)
line22 = ls3
print("line22:", line22)
newline2.append(line22)
print(newline2)
print(line2)
print("line2_______end")
print(" 替换前line:", line)
print(" 替换前newline2:", newline2)
count = 0
q = open(filename, 'w', encoding='utf-8') # 创建一个写的文本
for i in range(0, len(line)):
if line[i][0] == '2':
line[i] = newline2[count]
# fileopen.writelines(line[i])
# fileopen.write(line[i].replace(line[i], newline2[count]))
count += 1
q.writelines(line[i]+ '\n')
print(" 替换后line:", line)
print(" 替换后newline2:", newline2)
去重
import os
import codecs
line_seen = set() # 初始化空的无序集合
pathDir = os.listdir("F:/train_final/imgs/")
for s in pathDir:
newDir = os.path.join("F:/train_final/imgs/", s)
if os.path.isfile(newDir):
if os.path.splitext(newDir)[1] == ".txt":
print(newDir)
line_seen = set() # 初始化空的无序集合
filename = os.path.basename(newDir)
in_file = codecs.open(newDir, 'r', encoding='utf-8')
out_file = codecs.open(filename, 'w', encoding='utf-8')
lines = in_file.readlines()
for line in lines:
if line not in line_seen:
out_file.write(line)
line_seen.add(line)
# 这里参考的别人的博客,但是找不到链接了。