簡體   English   中英

如何將每一行寫入 csv 文件?

[英]How can I write each row to a csv file?

我目前有正在寫入 csv 文件的代碼,但是,它不斷替換文件的第一行並覆蓋它而不是寫入它。

注意:我在 main() 內的 for 循環中有這個 function。

def write_csv_report(filename, region, data, current, server1, server2=False):
    if not os.path.exists(os.path.dirname(filename)):
        try:
            dir = os.makedirs(os.path.dirname(filename))
            
            header = ['region','old_dns_server', 'proposed_dns_server1', 'proposed_dns_server2']
            data = [region, current, server1, server2]

            with open(filename, 'a') as file:
                writer = csv.writer(file)
                writer.writerow(header)
                writer.writerow(data)

        except OSError as exc:
            if exc.errno != errno.EEXIST:
                raise

當我在腳本中運行此 function 時,它會寫入文件,但只添加一個條目。

有什么建議或解決方案可以添加多個條目嗎? 我查看了其他聖人問題並進行了谷歌搜索,但看起來我已經進行了實現此結果所需的必要更改,但不確定我缺少什么。

對於csv.writer (和csv.reader ),您需要使用newline=''打開文件

你還每次都寫 header,這有點奇怪。

這是一個或多或少做你想要的最小示例:

import csv

header = ['region','old_dns_server', 'proposed_dns_server1', 'proposed_dns_server2']

data1 = ['foo', 'bar', 'bar', 'quux']
data2 = ['foo1', 'bar1', 'bar1', 'quux2']

filename = 'test.csv'

with open(filename, 'w', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(header)
    writer.writerow(data1)

with open(filename, 'a', newline='') as file:
    writer = csv.writer(file)
    writer.writerow(data2)

給予:

region,old_dns_server,proposed_dns_server1,proposed_dns_server2
foo,bar,bar,quux
foo1,bar1,bar1,quux2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM