我想创建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 :(得分: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循环中的时间值位。