Я не думаю, что его можно читать и добавлять одновременно, но ваш файл не кажется большим, поэтому, возможно, сначала прочитайте его содержимое, добавьте новые строки и сохраните потом?
Редактировать
Спасибо за скриншот.Похоже, ;
не является разделителем столбца, потому что значения внутри ячеек также содержит ;
.Ограничитель, вероятно, ,
, но я не думаю, что это имеет значение, потому что - если я вас правильно понял - вы просто хотите сохранить строки такими, как они .Поэтому нет необходимости в csv.reader
, просто прочитайте строки в виде простого текста с помощью readlines()
, например:
import csv
variant = "VC4"
MET = "cutting.MET"
name = "Rob"
Base_ModQual = -0.8
Deg_rate = 0.30
Num_Years = 30
INSERT_ROW = 20
new_content = []
with open('Books.csv', 'r') as csv_file:
#reader = csv.reader(csv_file, delimiter =',')
reader = csv_file.readlines()
for i, row in enumerate(reader):
if i == INSERT_ROW:
for i in range(Num_Years+1):
deg = (Base_ModQual + (i)*Deg_rate)
c = ("SIM_" + str(i+2) + ";" + variant + ";" + MET + ";" + name + "_Year" + str(i) + "_" + f'{deg:.2f}' + "%modrate.csv" +";" + f'{deg:.2f}' +";")
new_content.append(c + '\n')
else:
new_content.append(row)
with open('Books.csv', 'w') as csv_file:
for line in new_content:
csv_file.write(line)