亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將一行數據附加到大型 CSV 文件中的第 2 行

將一行數據附加到大型 CSV 文件中的第 2 行

料青山看我應如是 2023-09-19 13:49:40
我確信這是一個非常簡單的問題,但我似乎找不到任何相關信息。我有一個非常大的 CSV 文件,我需要在標題后面直接插入一行,這有助于讀取 csv 并將其連接到地塊 shapefile 的另一個代碼。我有代碼來附加我想要的數據行,但它只會轉到最后一行。我無法弄清楚如何讓代碼在標題行之后立即插入我的行。這是我的代碼:import osimport csvinsert_row = '"AAAAAAAAAAAAAAAAAAA","**********","**********","**********","**********","**********","**********","**","**********","**********","****","**********",999999,9999,00'os.chdir(r"D:\PROPERTY\PINELLAS\Data_20201001_t")with open("owner_mail.csv", 'r') as csv_file, open("owner_mail.csv", 'a', newline = "") as new_file:    csv_reader = csv.reader(csv_file)    csv_writer = csv.writer(new_file)    csv_writer.writerow(insert_row)就是這樣了。我只需要 insert_row 行數據位于第 2 行位置,而不是位于文件末尾。謝謝。
查看完整描述

2 回答

?
慕尼黑8549860

TA貢獻1818條經驗 獲得超11個贊

除非替換完全相同長度的數據,否則不能只在文件中間插入一行。您必須讀取整個文件,對其進行編輯,然后重新寫入。


像這樣的東西應該有效:


import csv


# This must be an iterable not a string

insert_row = "AAAAAAAAAAAAAAAAAAA","**********","**********","**********","**********","**********","**********","**","**********","**********","****","**********",999999,9999,00


with open("owner_mail.csv", 'r') as csv_file, open("owner_mail_updated.csv", 'w', newline = "") as new_file:

    csv_reader = csv.reader(csv_file)

    csv_writer = csv.writer(new_file)


    header = next(csv_reader)

    csv_writer.writerow(header)


    csv_writer.writerow(insert_row)


    for line in csv_reader:

        csv_writer.writerow(line)

如果 CSV 文件不太大而無法完全放入內存,那么您可以一次讀取所有行,對其進行編輯,然后將它們寫回到同一個文件中。一旦出現問題,風險就更大。更安全地寫入新文件,然后刪除原始文件并重命名(如果沒有錯誤):


import csv


# This must be an iterable not a string

insert_row = "AAAAAAAAAAAAAAAAAAA","**********","**********","**********","**********","**********","**********","**","**********","**********","****","**********",999999,9999,00


with open("owner_mail.csv", 'r') as csv_file:

    rows = list(csv.reader(csv_file))


rows.insert(1,insert_row)  # insert after header row


with open("owner_mail.csv", 'w') as csv_file:

    w = csv.writer(csv_file)

    w.writerows(rows)


查看完整回答
反對 回復 2023-09-19
?
素胚勾勒不出你

TA貢獻1827條經驗 獲得超9個贊

請嘗試這個:


import os

import csv


insert_row = '"AAAAAAAAAAAAAAAAAA","**********","**********","**********","**********","**********","**********","**","**********","**********","****","**********",999999,9999,00'


with open("owner_mail.csv", 'r') as csv_file, open("owner_mail.csv", 'w') as new_file:

  csv_reader = csv.reader(csv_file)

  reader = list(csv_reader)

  reader.insert(1,insert_row)

  csv_writer = csv.writer(new_file)

  csv_writer.writerows(reader)


查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號