创建csv文件时遇到的问题

2024-06-16 11:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想创建一个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']

我该怎么办?你知道吗


Tags: csvpath图像importsrcdatanamesos
2条回答

第一个问题:在外循环中,您一个接一个地读取图像,在外循环中,您为您读取的每个图像一次又一次地打开csv文件。你知道吗

应该做些什么:

with open("test.csv","a+") as csvfile:
    writer = csv.writer(csvfile)
    for idx, video in enumerate(video_names):
        ... write data ...

第二个问题:你应该用writer.writerow([idex, src])而不是writer.writerows([idex, src])(注意)。第二个(writerows)认为,你给了它两行,一行是idex,另一行是src

如果你去掉多余的“s”,它就会工作

        writer.writerows([idex, src])

应该是

writer.writerow([idex, src])

您使用的函数用于iterable,这就是它在输出文件中逐字符写入的原因。你知道吗

相关问题 更多 >