我正在尝试在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
答案 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(所以使用的是什么),而在这里你会得到一个绝对数字递增对于所有目录的所有文件。