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

2024-04-18 08:11:51 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我试图读取一组文件,并通过一个返回一组数字的函数来运行它们。我需要写一个带有标题的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的想法,但是处理函数的输出似乎更容易处理,问题似乎有点不同

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


Tags: 文件csvcsvfilepath函数testfornames
1条回答
网友
1楼 · 发布于 2024-04-18 08:11:51

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

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

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

这能让你动起来吗

相关问题 更多 >