Dzień dobry to mój pierwszy post i pierwszy program.
Program sprawdza czy istnieje plik z danymi, zaczytuje plik .lst w którym są daty, godziny, loginy.
Plik zawiera dane od 2003 roku.
Program oczekuje na podanie z klawiatury szukanego roku i miesiąca, wyszukuje wszystkie zdarzenia np. z luty 2021.
Problem pojawia się gdy jeden login występuje klika razy:
2021.02.18 0939 1 XXX YYY
2021.02.18 0945 2 XXX YYY
2021.02.18 0914 2 XXX YYY
2021.02.19 0524 1 ZZZ WWW
2021.02.19 0518 2 ZZZ WWW
2021.02.19 0509 2 ZZZ WWW
Aktualnie wyświetla się cała lista nie zależnie ile razy dany logi występuje.
Potrzebuje wyświetlić że login XXX YYY występuje ale tylko raz. Najlepiej ten pierwszy raz np. 2021.02.18 0939 ale razem z datą i godziną. Posortowana lista wyglądałaby tak:
:
2021.02.18 0939 1 XXX YYY
2021.02.19 0524 1 ZZZ WWW
Poniżej fragment który szuka w pliku dane, wyrażenia zawartego w pliku szukane (Np. 2021.02) i zapisuje do pliku zapis.
szukane = "1.txt"
dane = "1.lst"
zapis = '2.txt'
keys = [key for key in (line.strip() for line in open(szukane)) if key]
with open(dane, encoding="utf8") as f:
for line in f:
for key in keys:
if key in line:
print(line, end='')
zapis = open('2.txt', 'a')
zapis.write(line + '\n')
break
To właśnie te dane zawarte w pliku zapis = '2.txt' chciałbym wyświetlić ponownie ale już posortowane.