Salve, ho queste 3 funzioni:

codice:
    def nm_line ():

        file_ppl=open('docs/ppl/ppl.dat', 'r')
        num=0
        while file_ppl.readline() != '\n':
            file_ppl.readline()
            num=num+1

        file_ppl.close()

        return num

    def sort_f ():

        sort_ppl=open('docs/ppl/ppl.dat', 'r')
        k = nm_line()
        while k>=2:
            j=2
            while j<=nm_line():
                if sort_ppl.readline()>sort_ppl.readline(j):
                    appo=sort_ppl.readline(j)
                    appo_2=sort_ppl.readline()
                    appo_2=sort_ppl.readline(j)
                    appo=sort_ppl.readline()
                j=j+1
            k=k-1
        sort_ppl.close()
            
        
   
    #legge i dati contenuti nel file    
    def read ():

        wr_ppl=open('docs/ppl/ppl.dat', 'r')
        if wr_ppl.read()=='' or wr_ppl.read()=='\n':
            print 'La rubrica e\' vuota.\n'
        else:
            wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
            sort_f()
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            print (wr_ppl.read())
        wr_ppl.close()
Quando avvio il programma mi da questo errore:
Traceback (most recent call last):
File "D:\Documents and Settings\SiR DanieL\Desktop\Gestionale\RuPyc.py", line 84, in <module>
cl_ppl.read()
File "D:\Documents and Settings\SiR DanieL\Desktop\Gestionale\cl_ppl.py", line 85, in read
sort_f()
NameError: global name 'sort_f' is not defined
Dove sbaglio?

Ho provato anche ad ordinare il file con sort() in questo modo:

codice:
    #legge i dati contenuti nel file    
    def read ():

        wr_ppl=open('docs/ppl/ppl.dat', 'r')
        if wr_ppl.read()=='' or wr_ppl.read()=='\n':
            print 'La rubrica e\' vuota.\n'
        else:
            wr_ppl.close() #bisogna chiudere il file per poter portare il puntatore all'inizio
            wr_ppl=open('docs/ppl/ppl.dat', 'r')
            lista=wr_ppl.readlines()
            lista.sort()
            print (lista)
        wr_ppl.close()
ma non funziona