Как добавить еще один столбец с результатом в CSV файл?

filename = input('Enter name of file: ')
file = open(filename, 'r')
arr = []
arr1 = []

arr = file.readlines()

for i in arr:
    arr1.append(i.strip().split(','))

#------Sorting--------------
for i in arr1:
    sumprice = (int(i[1])*int(i[2]))
    file.write(str(sumprice))
file.close

Программа должна добавлять в конец каждой строки файла результат - sumprice.

Вот файл:

potato,45,20,Belarus
kosyak,74,30,Kazahstan
joint,35,50,USA
vodka,68,23,Russia
tea,20,34,UK
bagget,50,40,France

Должно выйти вот так:

potato,45,20,Belarus,900
kosyak,74,30,Kazahstan,2220
joint,35,50,USA,1750
vodka,68,23,Russia,1564
tea,20,34,UK,680
salo,50,40,Ukraine,2000

Ответы (2 шт):

Автор решения: cauf

Во-первых, необходимо открыть файл повторно, на этот раз на запись, переписав полностью его содержимое. Код второй части будет примерно таким:

# открываем файл
with open(filename, mode='w') as fl:
    
    # определяем буферный список
    arr2 = []
    
    # проходим по коллекции расделенных данных
    for i in arr1:
        
        # вычисляем произведение
        sumprice = int(i[1])*int(i[2])
        
        # соединяем новую строчку на основе предыдущиз данных с добавлением 
        # вычисленной суммы
        line = ','.join(i.append(sumprice))
        
        # добавляем строку в буферный список
        arr2.append(line)
        
    # соединяем все строки в один кусок текста
    write_text = '\n'.join(arr2)
    
    # записываем данные обратно в файл
    fl.write(write_text)
→ Ссылка
Автор решения: MaxU

Откройте для себя модуль Pandas:

import pandas as pd   #  pip install pandas

filename = r"C:\temp\data.csv"
df = pd.read_csv(filename, header=None).add_prefix("col")
df = df.eval("new = col1 * col2")
df.to_csv(r"c:\temp\result.csv", header=False, index=False)

результат:

potato,45,20,Belarus,900
kosyak,74,30,Kazahstan,2220
joint,35,50,USA,1750
vodka,68,23,Russia,1564
tea,20,34,UK,680
bagget,50,40,France,2000

PS для любителей однострочников:

(pd
 .read_csv(filename, header=None)
 .add_prefix("col")
 .eval("new = col1 * col2")
 .to_csv(r"c:\temp\result.csv", header=False, index=False))
→ Ссылка