读取然后写入 CSV 文件行 - Python3
Reading then Writing Lines of CSV file - Python3
我最近编写了脚本来从县 属性 评估网站上抓取和下载我需要的不同文件。我现在想添加可以读取前 2 行并将它们写入新 CSV 文件的代码,以便在任何字段名称为 added/deleted/changed 时让我具有一定的可观察性。我想我已经很接近了,但是我 运行 遇到了一个我似乎无法弄清楚的错误。这是我的代码:
with open('OsceolaTaxParcels09012020.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
for i in range(2):
rows = print(csv_reader.__next__())
with open('Osceola_Field_Check09152020.csv', 'w') as new_file:
csv_writer = csv.writer(new_file)
for i in range(2):
csv_writer.writerows(rows)
我不断收到的错误在最后一行,类型错误:writerows() 参数必须是可迭代的。
我认为 'rows' 变量是可迭代的,因为它包含原始 csv 文件的前两行,但它不是。
最终,我想编写代码来比较两个 CSV 文件,以便轻松检查字段更改;但那是另外一回事。
使用writerow
例如:
with open('OsceolaTaxParcels09012020.csv', 'r') as csv_file, open('Osceola_Field_Check09152020.csv', 'w', newline="") as new_file:
csv_reader = csv.reader(csv_file)
csv_writer = csv.writer(new_file)
next(csv_reader) # Skip Header
for _ in range(2): # Iterate next 2 rows.
csv_writer.writerow(next(csv_reader)) # Write Row
如果您尝试将前两行从一个文件写入另一个文件,则不需要使用 csv
模块。您可以使用 pathlib
进行 high-level 文件操作来读取一个文件并写入另一个文件。
from pathlib import Path
data = """\
a,b,c
1,2,3
0,0,1
"""
# Write example data to file.
p = Path("data.csv")
p.write_text(data)
# Read contents.
file_contents = p.read_text()
all_lines = file_contents.splitlines()
first_two_lines = all_lines[:2]
# Write to a new file.
output = Path("output.csv")
output.write_text("\n".join(first_two_lines))
我最近编写了脚本来从县 属性 评估网站上抓取和下载我需要的不同文件。我现在想添加可以读取前 2 行并将它们写入新 CSV 文件的代码,以便在任何字段名称为 added/deleted/changed 时让我具有一定的可观察性。我想我已经很接近了,但是我 运行 遇到了一个我似乎无法弄清楚的错误。这是我的代码:
with open('OsceolaTaxParcels09012020.csv', 'r') as csv_file:
csv_reader = csv.reader(csv_file)
for i in range(2):
rows = print(csv_reader.__next__())
with open('Osceola_Field_Check09152020.csv', 'w') as new_file:
csv_writer = csv.writer(new_file)
for i in range(2):
csv_writer.writerows(rows)
我不断收到的错误在最后一行,类型错误:writerows() 参数必须是可迭代的。 我认为 'rows' 变量是可迭代的,因为它包含原始 csv 文件的前两行,但它不是。
最终,我想编写代码来比较两个 CSV 文件,以便轻松检查字段更改;但那是另外一回事。
使用writerow
例如:
with open('OsceolaTaxParcels09012020.csv', 'r') as csv_file, open('Osceola_Field_Check09152020.csv', 'w', newline="") as new_file:
csv_reader = csv.reader(csv_file)
csv_writer = csv.writer(new_file)
next(csv_reader) # Skip Header
for _ in range(2): # Iterate next 2 rows.
csv_writer.writerow(next(csv_reader)) # Write Row
如果您尝试将前两行从一个文件写入另一个文件,则不需要使用 csv
模块。您可以使用 pathlib
进行 high-level 文件操作来读取一个文件并写入另一个文件。
from pathlib import Path
data = """\
a,b,c
1,2,3
0,0,1
"""
# Write example data to file.
p = Path("data.csv")
p.write_text(data)
# Read contents.
file_contents = p.read_text()
all_lines = file_contents.splitlines()
first_two_lines = all_lines[:2]
# Write to a new file.
output = Path("output.csv")
output.write_text("\n".join(first_two_lines))