Python CSV,如何在逐行(逐行)读取数据的同时在行尾追加数据?
Python CSV, How to append data at the end of a row whilst reading it line by line (row by row)?
我正在读取一个名为:candidates.csv 逐行(逐行)的 CSV 文件,如下所示:
import csv
for line in open('candidates.csv'):
csv_row = line.strip().split(',')
check_update(csv_row[7]) #check_update is a function that returns an int
如何在我正在阅读的行(行)末尾追加 check_updates 函数 returns 的数据?
这是我尝试过的:
for line in open('candidates.csv'):
csv_row = line.strip().split(',')
data_to_add = check_update(csv_row[7])
with open('candidates.csv','a') as f:
writer = csv.writer(f)
writer.writerow(data_to_add)
出现此错误:
_csv.Error: iterable expected, not NoneType
也不完全确定这是否会添加到我正在阅读的行末尾的正确位置。
最重要的是,如何最好地在我当前正在阅读的行的末尾添加数据?
在尝试之前请备份您的文件以防万一。
您可以编写一个新的临时文件并将其移动到您从中读取的旧文件的位置。
from tempfile import NamedTemporaryFile
import shutil
import csv
filename = 'candidates.csv'
tempfile = NamedTemporaryFile('w', delete=False)
with open(filename, 'r', newline='') as csvFile, tempfile:
writer = csv.writer(tempfile)
for line in csvFile:
csv_row = line.strip().split(',')
csv_row.append(check_update(csv_row[7])) # this will add the data to the end of the list.
writer.writerow(csv_row)
shutil.move(tempfile.name, filename)
我正在读取一个名为:candidates.csv 逐行(逐行)的 CSV 文件,如下所示:
import csv
for line in open('candidates.csv'):
csv_row = line.strip().split(',')
check_update(csv_row[7]) #check_update is a function that returns an int
如何在我正在阅读的行(行)末尾追加 check_updates 函数 returns 的数据? 这是我尝试过的:
for line in open('candidates.csv'):
csv_row = line.strip().split(',')
data_to_add = check_update(csv_row[7])
with open('candidates.csv','a') as f:
writer = csv.writer(f)
writer.writerow(data_to_add)
出现此错误:
_csv.Error: iterable expected, not NoneType
也不完全确定这是否会添加到我正在阅读的行末尾的正确位置。
最重要的是,如何最好地在我当前正在阅读的行的末尾添加数据?
在尝试之前请备份您的文件以防万一。
您可以编写一个新的临时文件并将其移动到您从中读取的旧文件的位置。
from tempfile import NamedTemporaryFile
import shutil
import csv
filename = 'candidates.csv'
tempfile = NamedTemporaryFile('w', delete=False)
with open(filename, 'r', newline='') as csvFile, tempfile:
writer = csv.writer(tempfile)
for line in csvFile:
csv_row = line.strip().split(',')
csv_row.append(check_update(csv_row[7])) # this will add the data to the end of the list.
writer.writerow(csv_row)
shutil.move(tempfile.name, filename)