报错代码:
if __name__ == '__main__':
import csv
data = [1, 0, 1, 1, 0, 1, 0]
with open('wodecesi.csv', 'w', newline='') as f:
mywrite = csv.writer(f)
for i in data:
mywrite.writerow(i)
原因:
writerow函数需要二维数组,包括行和列,正确写法:
if __name__ == '__main__':
import csv
data = [[1, 0, 1, 1, 0, 1, 0]]
with open('wodecesi.csv', 'w', newline='') as f:
mywrite = csv.writer(f)
for i in data:
mywrite.writerow(i)
txt分类转csv文件:
import csv
import os
import shutil
import numpy as np
if __name__ == '__main__':
headers = ['img_path', 'col_a', 'col_b', 'col_c', 'val/train']
txt_path=r"/xxx.txt"
save_to=r'/data5/xxx/'
with open(txt_path, 'r', encoding='utf-8') as fr:
lines=fr.readlines()
count=0
datas={}
for line in lines:
data_tmp_s=line.replace("\n","").split(' ')
img_path=os.path.basename(data_tmp_s[0])
cls_id= int(data_tmp_s[1])
aaa=[cls_id]
values = [f"/imgs/{count:05d}.jpg", cls_id, -1, -1,np.random.randint(0, 2)]
img_to = f"{save_to}/{cls_id}/{values[0]}"
os.makedirs(os.path.dirname(img_to),exist_ok=True)
shutil.copy(data_tmp_s[0],img_to)
if cls_id in datas:
datas[cls_id].append(values)
else:
datas[cls_id] = [values]
count+=1
for key in datas.keys():
label_path = os.path.join(save_to, str(key), "label.csv")
values = datas[key]
with open(label_path, 'w', newline='') as f:
f_csv = csv.writer(f)
f_csv.writerow(headers)
f_csv.writerows(values)