2016-09-07 53 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次)後