Ps: A me servirebbe che in fo ci fosse solo gli elementi di fi1.txt - gli elementi che fi1.txt ha in comune con fi2 ovvero secondo l'esempio:

fo dovrebbe essere alla fine.. solo:

fo: dfnoi,3,5,g
Sarà la quinta volta che modifico il codice perchè tu cambi idea all'ultimo o non sei chiaro nell'esporre quello che realmente vuoi!
Il codice è quello che ti ho pastato e funziona (provato personalmente anche su win). Se vuoi applicare la mdifica (che sottolineo mi hai detto solo ora e non prima) non hai che da modificare il source.

Per l'altro punto (2) sto impazzendo per trovare un modo di identificare eventuali righe doppie in un file txt...
Mi daresti almeno una dritta?
Analizza il file di input e per ogni riga aggiungi un elemento ad una lista.
Una volta che hai la lista con tutti gli elementi processala con un for e per ogni elemento esegui un count() per sapere quante volte l'elemento viene ripetuto. Se tale elemento è maggiore di 1 aggiungi l'elemento a una seconda lista che indicherà i "doppioni". Esempio:

codice:
### fi1.txt
A,B,C,D,E,F
dfnoi,3,5,g
A,B,C,D,E,F
3,4,h,5,7,8
664,Opu,32,V,DF
1,254,7,8,9,cs,W,F
A,B,C,D,E,F
A,B,C,D,E,F
dfnoi,3,5,g

### code
fi1 = open('fi1.txt','r')
lista1 = []
plus = []

for line in fi1.readlines():
    lista1.append(line)

for i in lista1:
    if lista1.count(i) > 1:
        if i[:-1] not in plus:
            plus.append(i[:-1])

print "Doppioni:\n"
for i in plus:
    print i

### output
C:\Documents and Settings\billiejoex\Desktop>sort.py
Doppioni:

A,B,C,D,E,F
dfnoi,3,5,g