所以我试图读取一组文件,并通过一个返回一组数字的函数来运行它们。我需要写一个带有标题的csv,我需要文件名作为csv的第一列
我已经尝试使用以下代码来编写csv
path = 'input/files'
opath = 'output/csvs'
col_names = [file, n1,n2,n3,n4,n5]
tmp = np.sort(glob.glob(path))
csvfile = open('opath/test.csv','w')
writer = csv.writer(csvfile),delimiter=',',lineterminator='\n')
writer.writerow(col_names) #writing header for the csv
for t in tmp:
img = np.load(t)
writer.writerow([t, test(t))
csvfile.close()
其中test()
是一个伪函数,我用它来重现函数的输出。它基本上读取一个文件并在处理之后创建数字。因此它接受已经加载的文件t
,并打印出计算结果
def test(f):
for i in range(f):
print i,i+1,i-1,2*i
对于我尝试使用的最后一个test()
函数:
print [i,i+1,i-1,2*i]
return [i,i+1,i-1,2*i]
所以我可以有一个列表来解析成writerow()
,但这似乎也不起作用
我收到的输出如下
file1,"[(1,4,3,5)]"
file1,"(1,4,3,5)"
而不是想要的输出:file1,1,4,3,5
我不想使用字符串方法来编辑每一行,因为我将阅读大量的文件,从而使我的csv相当大,我知道这是不正确的方法来做这件事
另外,我不认为将每个输出单独存储为列表会起作用,因为处理文件需要更多的时间。我试着遵循this question的想法,但是处理函数的输出似乎更容易处理,问题似乎有点不同
关于如何解决这个问题有什么建议或见解吗
非常简单,您必须发送
writerow
一个您想要打印的东西的列表。当前代码提供了两个元素:整数和列表。这就是你在输出线上得到的我想你需要下面的代码
test
返回一个列表。与其将其作为一个包含四个元素的单个元素添加,不如向writerow
发送一个包含五个元素的列表。列出t
和这四个元素。我在下面对它进行了非常简单的编码;一旦你了解了它的工作原理,你就可以把它折叠起来这能让你动起来吗
相关问题 更多 >
编程相关推荐