繁体   English   中英

从 While 循环创建一个 New.CSV 文件

[英]Create A New .CSV File From While Loop

我有一个运行良好的while循环(它做了它应该做的)。 当我运行while循环并让它写入时,它会生成dataframe to.CSV它没有问题并继续循环(尽管覆盖了.CSV文件)

但是我试图弄清楚每次循环运行时如何将 df 写入一个新文件(使用变量生成的名称)。 我似乎无法弄清楚这一点。

有人有建议吗?

 f = open('ActionLogLinks.csv')
    csv_f = csv.reader(f)
    action_log_links = []
    for column in csv_f:
      action_log_links.append(column[1])
    cand_ref = []
    for column in csv_f:
      cand_ref.append(column[0])
    position = 0
    while position <len(action_log_links):
        browser.get(action_log_links[position])        
        for cand in cand_ref:
            filename="Loop_Test"+"_"+str(cand_ref)+".csv"
            df.to_csv(filename, index=False)
        position = position + 1

我使用的一个常见解决方案是在创建 output 时为文件名添加时间戳。 由于您对代码的 rest 非常满意,因此您只需更新编写文件的部分,尽管您可以将导入放在脚本的顶部。

但是,仔细阅读后,我认为您可能对如何“循环”迭代有问题。 您在循环内使用cand_ref而不是在循环期间动态更新cand

请注意,我更改了您的字符串连接以使用更新的“f-string”格式:

  from time import strftime   

  for cand in cand_ref:
        filename=f"Loop_Test_{cand}_{strftime('%Y%m%d-%H%M%S')}.csv"
        df.to_csv(filename, index=False)

您可以使用以下代码创建并打开一个具有随机名称的新文件进行写入。

您还可以 go 时间戳路由,在这种情况下,请确保时间戳的精度足够好,不会在循环的任何两个相邻迭代中生成相同的值。

import string
import random
name = "".join([random.choice(string.lowercase) for _ in range(10)]) + ".csv"
f = open(name, "w+")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM