Suma czasu – błąd "invalid literal for int() with base"

0

Witam koledzy,
Używam skryptu:

import sys
sys.argv

entry=2
t=0
sec=0
min=0
hrs=0

with open(sys.argv[1]) as fp:
    for line in fp:
        entry+=1
        if entry % 8:
            continue
        
        t+=int(line)

sec = t % 60
t //= 60
min = t % 60
hrs = t // 60

print("Łączny czas: %d godzin %02d minut %02d sekund" % (hrs, min, sec))

Wejście:

315:31:54
00:00:32
01:11:24
08:18:18
111:35:56
112:45:26
00:21:33

oczywiscie znacznie wieksze ;)

I pojawia się błąd:

invalid literal for int() with base 10: '112:45:26\n'

sprawdziłem 10x. Nie ma białych znaków w pliku txt wejścia. Co jest więc przyczyną?

1

Łańcuch tekstowy '11226\n' nie jest wartością typu integer.

0

Plik wygenerowany przy pomocy PHP, - usunięto z niego znaki PRZED godzinami i PO godzinach ...
To co jest nie tak z tym plikiem? Sprawdziłem HEX EDYTOREM i nie ma w nim białych znaków.

Da się zrobić tak aby Python ignorował znak \n?

0

Tylko wiesz, że to nie rozwiąże twojego problemu? Nawet pozbywając się \n np. za pomocą .rstrip() wykonanym na łańcuchu tekstowym dostaniesz wartość 112:45:26 a to nadal nie jest poprawna wartość typu integer. Integer to same liczby a tu są jakieś dwukropki. Swoją drogą załącz może plik.

0

https://pastebin.com/FnZnSwAH Fragment pliku do testu

0

Ty chyba nie masz pojęcia o tym co ten skrypt robi. Prościej będzie jak napiszesz co chcesz osiągnąć.

1

Zamianę minut na godziny i sekund na minuty zostawiam tobie

hour = 0
minute = 0
sec = 0

for linia in open("wejscie.txt", "r"):
    linia = linia.rstrip("\n")
    whour, wmin, wsec = linia.split(":")
    hour += int(whour)
    minute += int(wmin)
    sec += int(wsec)

print (hour, minute, sec)

1 użytkowników online, w tym zalogowanych: 0, gości: 1