#!/usr/bin/env python3

# Sestavi program, ki sprejme ime tekstovne datoteke in izpiše
# frekvence besed v datoteki. Se pravi, za vsako besedo pove,
# kolikokrat se pojavi v datoteki. Izpisuje naj po vrstnem
# redu pojavitev, od najbolj pogoste do najmanj pogoste besede.

import sys
from operator import itemgetter

# 1. Odpremo datoteko
#    * Kako dobimo ime datoteke, ki jo moramo odpreti?

ime_datoteke = sys.argv[1] # ime datoteke bomo podali preko ukazne vrstice

# Slovar, v katerem hranimo frekvence besed
frekvenca = {}

with open(ime_datoteke, 'r') as datoteka:
    # Zdaj je datoteka odprta
    # 2. Beremo vrstice iz datoteke
    for vrstica in datoteka:
        # 3. Za vsako vrstico: ločimo na besede
        for beseda in vrstica.split():
            # odstrani ločila na začetku in koncu besede
            beseda = beseda.strip('!()-;:\'"?/,.')
            beseda = beseda.lower()
            # 4. Za vsako besedo: povečamo njeno število pojavitev
            frekvenca[beseda] = frekvenca.get(beseda, 0) + 1

# 5. Ko je konec datoteke:
# 6. Izpišemo besede in njihove frekvence (število pojavitev), v pravem vrstnem redu
for (b, f) in sorted(frekvenca.items(), key=itemgetter(1), reverse=True):
    print ("{0}\t{1}".format(f, b))
