【问题标题】:How to create 2 csv files when using recursion使用递归时如何创建2个csv文件
【发布时间】:2017-01-14 15:43:13
【问题描述】:

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

怎么做?

【问题讨论】:

    标签: python arrays csv


    【解决方案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)

    【讨论】:

      【解决方案2】:

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

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

      在这种情况下,如果 a 包含示例中的两个元素,您将有两个文件(名称中包含 "ab""sv")。这里我们连接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')
          ...
      

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-08-21
          • 2020-11-30
          • 2020-03-01
          • 2012-06-12
          • 2010-11-29
          • 1970-01-01
          相关资源
          最近更新 更多