簡體   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