如何在CSV文件中的行中写入数据

时间:2017-01-02 10:01:53

标签: python csv

我正在尝试在csv文件中写入数据。

我写的是这样的:
617.png 0,988.png 0,850.png 0,824.png 0,536.png 0

但我想在文件中写这样的数据

617.png 0
988.png 0
850.png 0
824.png 0
536.png 0

有任何帮助吗?这是我的代码:

import os
import cvutils 
import csv 
dir_unknown = 'UntitledFolder'
trainingSet='/home/irum/Desktop/CLUSTERING/UntitledFolder/UntitledFolder1'
#Create CSV File
images_names = []
SEPARATOR=" "

print"start"
label = 0
for (dirname, dirnames, filenames) in os.walk(dir_unknown):
    print"dd"
    for subdirname in dirnames:
        subject_path = os.path.join(dirname, subdirname)
        print "subject_path",subject_path
        for filename in os.listdir(subject_path):
        abs_path = "%s" % (filename)
        images_names.append("%s%s%d" % (abs_path,SEPARATOR,label))
        with open('class_train22', 'wb') as myfile:
            wr = csv.writer(myfile,delimiter=',',quotechar='\\',quoting=csv.QUOTE_MINIMAL, lineterminator='\r\n')
            wr.writerow(images_names )
        label = label + 1

1 个答案:

答案 0 :(得分:1)

首先,您的csv文件只有1行,因为您要打开相同的文件进行写入(截断,而不是追加)。

您必须在开始时创建一个with块,打开文件并一劳永逸地创建csv对象,所有其他语句都在with块中。

csv文件必须以空格分隔。如果在文件名中找到空格,则不会做任何其他事情

,将进行引用
with open('class_train22', 'wb') as myfile:  # python 2 only
#with open('class_train22', 'w',newline='') as myfile:  # python 3 only

    wr = csv.writer(myfile,delimiter=' ',quotechar='\\',quoting=csv.QUOTE_MINIMAL)

然后,每个文件名写入1行+索引对,作为列表。 csv模块为您处理分离/引用,无需格式化字符串。

内循环看起来像这样:

    for (dirname, dirnames, filenames) in os.walk(dir_unknown):
        for subdirname in dirnames:
            subject_path = os.path.join(dirname, subdirname)
            for filename in os.listdir(subject_path):
                wr.writerow([filename,label])
                label += 1

你只需要调整label的增量,因为你似乎期望到处都是0(所以使用的是什么),而在这里你会得到一个绝对数字递增对于所有目录的所有文件。