【发布时间】:2017-05-09 23:22:59
【问题描述】:
所以我试图读取一组文件并通过一个返回一组数字的函数运行它们。我需要写一个带有标题的 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()function:
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 的想法,但处理函数的输出似乎更容易处理,问题似乎有点不同。
关于如何解决此问题的任何建议或见解?
【问题讨论】:
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中并重现您描述的问题。您的帖子包含未定义的变量和至少一个语法错误。
-
感谢反馈,问题其实可以总结一下。如何更改测试函数的输出,以便在编写 csv 时不打印字符串,而是打印实际序列(如果产生数字)?希望这会有所帮助。
标签: python python-2.7 csv