2016-09-07 31 views
1

我想创建2个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文件

怎么办它?

回答

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') 
    ... 
0

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

1

首先转换成数据帧然后将其保存为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次)后