2015-05-03 3 views
0

Я сделал программу, где у меня есть данные в файле csv. Я хочу использовать некоторые данные из файла в математических уравнениях.добавление числа к последнему номеру в файле

файл выглядит следующим образом

gender,1500,300 

это мой код

caloriesIn = 1400 
callost = 100 
with open ("fitness file.csv") as csvfile: 

    readcsv = csv.reader(csvfile, delimiter=",") 

    for row in readcsv: 
     BMR = (row[1]) 
     caloriesLost = (row[2]) 
    caloriesLost = caloriesLost + (str(((float(BMR)) - (caloriesIn)) + (int(callost)))) 

    FitnessFile = open(("fitness file.csv") , "a") 
    FitnessInfo = "," + str(caloriesLost) 
    FitnessFile.write(FitnessInfo) 
    FitnessFile.close() 

теперь я хочу, чтобы добавить номер я только что сделал (caloriesLost) до последнего числа в файле. , когда я запускаю это он просто добавляет 500 (что я рассчитывается уже caloriesLost) в файл, например так:

gender,1500,300,500 

и мне это нужно добавить к последнему номеру в файле, как это:

gender,1500,800 

Я знаю, что это может быть немного запутанным и им жаль об этом. im все еще новичок. Спасибо за помощь :)

Файл всегда один.

+0

1) Есть ли всегда одну строку в файле CSV? 2) Почему четыре уровня отступов после «с»? 3) Почему так много бесполезных круглых скобок? 4) Где определяется каллоста? –

+0

Да, всегда есть 1 строка в моем файле csv – joe3454

+0

callost равно 100 – joe3454

ответ

0

Если это только одну строку, то нет никаких причин, чтобы усложнять это с помощью модуля CSV:

caloriesIn = 1400 
callost = 100 
fileName = 'fitness file.csv' 

# read data from the file 
with open(fileName) as f: 
    label, bmr, caloriesLost = f.read().strip().split(',') 

# calculate the new caloriesLostvalue  
caloriesLost = float(caloriesLost) + float(BMR) - caloriesIn + callost 

# save the new data 
with open(fileName, 'w+') as f: 
    f.write(','.join((label, bmr, calloriesLost))) 
+0

Как сделать то же самое, но с файлом, который выглядит так: – joe3454

+0

test5,16,165.0, male, 27.915518824609734,1329.0591,300 – joe3454

+0

Так вы теперь есть несколько строк или одна строка? – poke

Смежные вопросы