Выгрузка в текстовый файл в виде таблицы

Вот мой код:

from prettytable import PrettyTable

def Load():
    with open ('w.txt', encoding='utf-8') as file:
    v = list(file.read().splitlines())

    d=int(v[0])

    for i in range(len(v)):
        if i == 0:
            continue
        #Фамилии
        elif i % 2 == 1:
            sd_name=''
            sd_name+=v[i]

        #Числа
        elif i % 2 == 0:
            z = v[i]
            x = int(z[0] + z[1])
            y = int(z[3] + z[4] + z[5] + z[6])

            itogo=''
            itogo+=str(x*y)

            days=''
            days+=str(x)

            oklad=''
            oklad+=str(y)

            Calc(x,y,d,sd_name,days,oklad)


summa=[]

def Calc(x,y,d,sd_name,days,oklad):
    zrplt = round(((x*y)/d), 2)
    summa.append(zrplt)
    it = sum(summa)
    Save(zrplt,sd_name,days,oklad,it)



t = PrettyTable()
t.field_names = ["Фамилия", "Дни", "Оклад", "Зарплата"]


def Save(zrplt,sd_name,days,oklad,it):
    with open('w2.txt', 'w', encoding='utf-8') as f:

        t.add_rows(
            [
                [str(sd_name),str(days),str(oklad),str(zrplt)]

            ]
        )

        t.add_row(["Итого", '','',it])
        f.write(str(t))

Load()

Получается так: введите сюда описание изображения

А надо так: введите сюда описание изображения

Помогите, пожалуйста, решить проблему.


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

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

На сколько я понял, проблема в том, что строчка Итого пишется после каждого сотрудника вместо того, что-бы писаться единожды, в конце таблицы.

Если это так, то лечение состоит в том, что-бы строчку кода, которая пишет ненужные промежуточные итоги t.add_row(["Итого", '','',it]) убрать из тела функции Save, которую вы вызываете циклически, после обработки данных сотрудника, и перенести связанные с ним действия - в том числе вычисление итоговой суммы и ее запись - в конец функции Load

P.S. Использование глобальными переменными, а тем более их хаотическое определение, перемешивание в коде операторов основной функции и определения вспомогательных функций и тоже в хаотическом порядке - крайне нехорошая практика, затрудняющая как написание кода, так и выявление и исправление ошибок в нем.

→ Ссылка