python通过读取和处理文件来创建csv

python通过读取和处理文件来创建csv,python,python-2.7,csv,Python,Python 2.7,Csv,所以我试图读取一组文件,并通过一个返回一组数字的函数运行它们。我需要写一个带有标题的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(csvf

所以我试图读取一组文件,并通过一个返回一组数字的函数运行它们。我需要写一个带有标题的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相当大,我知道这不是正确的方法

另外,我不认为将每个输出单独存储为列表会起作用,因为文件处理需要花费更多的时间。我试着遵循来自的想法,但处理函数的输出似乎更容易处理,问题似乎有点不同


关于如何解决这个问题,您有什么建议或见解吗?

非常简单,您必须发送
writerow
一份您想要打印的内容列表。您当前的代码为它提供了两个元素:一个整数和一个列表。这就是你在输出线上得到的

我想你需要下面的代码<代码>测试返回一个列表。与其将其作为一个包含四个元素的单个元素添加,不如向
writerow
发送一个包含五个元素的列表。列出
t
和这四个元素。我在下面非常简单地编写了代码;一旦你了解了它的工作原理,你就可以把它折叠起来

for t in range(5,8):
    line = [t]
    line.extend(test(t))
    # print line
    writer.writerow(line)

这会让你行动起来吗?

欢迎来到StackOverflow。请阅读并遵循帮助文档中的发布指南。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。您的帖子包含未定义的变量和至少一个语法错误。感谢您的反馈,可以对问题进行总结。如何更改测试函数的输出,以便在写入csv时,如果生成了数字,它不会打印字符串,而是打印实际序列?希望这有帮助。太好了!成功了。我将接受反馈,以改进未来的问题。