如何在使用递归时创建2个csv文件

时间:2016-09-07 05:09:05

标签: python arrays csv

我想创建2个csv文件。

我在一个函数中有2个数组然后我循环遍历它并调用另一个函数写入csv文件,因此它将创建2个csv文件

import time
import datetime
import csv
time_value = time.time()
def csv_write(s):
    print s
    f3 = open("import_"+str(int(time_value))+".csv", 'wt')
    writer = csv.writer(f3,delimiter = ',', lineterminator='\n',quoting=csv.QUOTE_ALL)
    writer.writerow(s)
    f3.close()

def process_array():
    a = [["a","b"],["s","v"]]
    for s in a:
        csv_write(s)

process_array()

整个想法是创建2个csv文件,因为它有2个数组元素,但上面的代码只是覆盖了文件,代码只在末尾创建了一个csv文件

因此,如果数组有10个元素,那么代码应该创建10个csv文件

怎么做?

3 个答案:

答案 0 :(得分:1)

首先将其转换为Dataframe,然后将其保存为CSV格式

import pandas as pd

a = [["a","b"],["s","v"]]

df=pd.DataFrame(a)

i=len(df)

for j in range(i):
    df.iloc[:,j].to_csv(str(j)+'.csv',index=False)

执行此代码后,您将获得两个csv文件(数组长度为2)

答案 1 :(得分:0)

您需要将参数添加到文件名中:

f3 = open("import_"+"".join(s)+"_"+str(int(time_value))+".csv", 'wt')

在这种情况下,如果"ab"包含示例中的两个元素,则会有两个文件(名称中包含"sv"a)。在这里,我们连接s的所有项,因此它不是最佳解决方案(因为对于列表a的不同元素,此串联的结果可能是相同的。)

所以,我建议使用这个解决方案:

for循环中,您可以计算元素数量:

idx = 0
for s in a:
    csv_write(s, idx)
    idx = idx + 1

在这种情况下,您需要扩展函数csv_write(再添加一个参数):

def csv_write(s, idx):
    print s
    f3 = open("import_"+str(i)+"_"+str(int(time_value))+".csv", 'wt')
    ...

答案 2 :(得分:0)

我不是一个经验丰富的Python人,但它看起来像是在代码之外定义处理元素数量的文件命名的时间值。每个数组都具有相同的时间value.csv名称,因为该时间值是在开始时定义的,不再被调用。尝试在写入命令之前嵌入for循环中的时间值位。