循环将多个txt文件中的数据append到已存在的csv中,换行,不删除已有数据
读入的d0a32932-d418-4290-9fb3-02318fb37039.txt数据格式:
61 11 163 103
126 42 247 125
318 217 492 381
422 22 502 94
输出的csv数据格式:
c59c9f2e-8a6d-455c-83c1-584c285ecf33.jpg | 470_14_27_35;501_20_32_25;746_22_49_71;65_135_93_117 |
"""
File: txtToCsv.py
Author: Yao Lee
"""
import csv
import os
# 读取需要被写的文件数据
def get_lines(filepath):
with open(filepath) as file_object:
lines = set(file_object.readlines())
return lines
def new_csv(lines,file):
count = len(lines)-1
print("total line" + str(count))
data = []
# 为了给csv文件中新建行的第一项特殊的标识,先用0占位
data.append('0')
print (file) #输出你读进来的文件名
# 循环操作读进来的每一行数据
for index, line in enumerate(lines):
if(len(line)>4):
index += 1
line= line.split(' ')
# 本次读入的txt文件是数字的列表,下面是构造想要输出的格式
w= int(line[3])-int(line[1])
h= int(line[2])-int(line[0])
line[2]= str(w)
line[3]=str(h)
line= line[0]+'_'+line[1]+'_'+line[2]+'_'+line[3]
oneline = line.strip()
data.append([oneline])
# 为了append到csv文件中新的行,将数字格式的数据转为str格式
data = [';'.join(map(str,t)) for t in data]
# 过滤掉不需要的数据
if(len(data)>2):
# 为了保证读入的列表输出在一个table中进行拼接操作
for i in range(2,len(data)):
data[1]=data[1]+';'+data[i]
name = file.split('.')[0]+'.jpg'
# 保证输出两个维度
lastdata = []
lastdata.append(name)
lastdata.append(data[1])
# 将处理好的数据append到固定的csv
with open('../2.csv', 'a') as newFile:
newFileWriter = csv.writer(newFile,delimiter=",")
newFileWriter.writerow(lastdata)
if __name__ == "__main__":
path = "dataSet Path"
list = []
files = os.listdir(path)
for file in files:
filepath = path + "/" + file
if os.path.isfile(filepath):
lines = get_lines(filepath)
new_csv(lines,file)