繁体   English   中英

将一行数据附加到大型 CSV 文件中的第 2 行

[英]Appending a row of data to line 2 in a large CSV File

我确信这是一个非常简单的问题,但我似乎找不到任何相关信息。

我有一个非常大的 CSV 文件,我需要在标题后直接插入一行,这有助于另一个读取 csv 并将其连接到包裹 shapefile 的代码。

我有代码来附加我想要的数据行,但它只会转到最后一行。 我不知道如何让代码在标题行之后立即插入我的行。 这是我的代码:

import os
import csv

insert_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 行位置而不是文件末尾。 谢谢你。

除非替换长度完全相同的数据,否则您不能只在文件中间插入一行。 您必须阅读整个文件,对其进行编辑并重新编写。

这样的事情应该工作:

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)

请试试这个:

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)


暂无
暂无

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

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