我想创建一个csv文件,它包含两列,第一列是图像的标签,第二列是图像的地址,下面是我的代码:
import os
import os.path as osp
import sys
import xml.etree.ElementTree as ET
import csv
data_dir = '/home/xieyangyang/Downloads/SiamFC/Data/VID/train/a'
video_names = os.listdir(data_dir)
for idx, video in enumerate(video_names):
video_path = osp.join(data_dir, video)
file_list = os.listdir(video_path)
idex = idx
for item in file_list:
with open("test.csv","a+") as csvfile:
idex = str(idex)
src = osp.join(video_path, item)#addres
#print(src)
#print(idex)
writer = csv.writer(csvfile)
writer.writerows([idex, src])
但csv很不正常:
['2', '0', '1']
['/', 'h', 'o', 'm', 'e', '/', 'x', 'i', 'e', 'y', 'a', 'n', 'g', 'y', 'a', 'n', 'g', '/', 'D', 'o', 'w', 'n', 'l', 'o', 'a', 'd', 's', '/', 'S', 'i', 'a', 'm', 'F', 'C', '/', 'D', 'a', 't', 'a', '/', 'V', 'I', 'D', '/', 't', 'r', 'a', 'i', 'n', '/', 'a', '/', 'c', 'a', 'r', '3', '7', '/', '2', '0', '1', '_', '0', '0', '5', '0', '7', 'v', '.', 'j', 'p', 'g']
但我想它应该是:
['1496', 'bounding_box_train/1496_c1s6_022396_05.jpg']
我该怎么办?你知道吗
第一个问题:在外循环中,您一个接一个地读取图像,在外循环中,您为您读取的每个图像一次又一次地打开csv文件。你知道吗
应该做些什么:
第二个问题:你应该用
writer.writerow([idex, src])
而不是writer.writerows([idex, src])
(注意)。第二个(writerows)认为,你给了它两行,一行是idex,另一行是src如果你去掉多余的“s”,它就会工作
应该是
您使用的函数用于iterable,这就是它在输出文件中逐字符写入的原因。你知道吗
相关问题 更多 >
编程相关推荐