从While循环创建新的.CSV文件

2024-04-25 10:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个while循环,它工作得非常好(它做它应该做的)。当我运行while循环并让它将生成的数据帧写入.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

Tags: 文件csvinlogrefdfforposition
2条回答

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

您还可以使用时间戳路径,在这种情况下,请确保时间戳的精度足够好,以避免在循环的任何两个相邻迭代中生成相同的值。你知道吗

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

我使用的一种常见解决方案是在创建输出时向文件名添加时间戳。由于您对代码的其余部分非常满意,因此只需更新编写文件的部分,尽管可以将导入放在脚本的顶部。你知道吗

然而,仔细阅读后,我想也许你有一个问题,你是如何“循环”的iterable。您在循环内使用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)

相关问题 更多 >