Python 将一行数据追加到大型CSV文件的第2行
我相信这是一个非常简单的问题,但我似乎找不到任何关于它的信息 我有一个非常大的CSV文件,我需要在标题后面直接插入一行,这有助于另一个代码读取CSV并将其连接到地块形状文件 我有代码附加我想要的数据行,但它只会转到最后一行。我不知道如何让代码在标题行之后立即插入我的行。这是我的密码:Python 将一行数据追加到大型CSV文件的第2行,python,csv,append,Python,Csv,Append,我相信这是一个非常简单的问题,但我似乎找不到任何关于它的信息 我有一个非常大的CSV文件,我需要在标题后面直接插入一行,这有助于另一个代码读取CSV并将其连接到地块形状文件 我有代码附加我想要的数据行,但它只会转到最后一行。我不知道如何让代码在标题行之后立即插入我的行。这是我的密码: import os import csv insert_row = '"AAAAAAAAAAAAAAAAAAA","**********","**********
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_行位于第2行位置,而不是文件的末尾。谢谢。< P>不能只在文件中间插入一行,除非替换完全相同长度的数据。您必须读取整个文件,编辑它,然后重新写入它 像这样的方法应该会奏效:
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)
非常感谢你的工作!我还必须重新格式化insert_row变量。我将它改为括号中的列表,而不是用单引号将整行内容括起来。@ParkerJohnson是的,我没有注意到,但更新了答案。