Voglio scoprire le differenze di 2 (o 3 file se possibile) riga per riga. Diff utils può farlo, tuttavia fornisce risultati imprecisi. Perché, 2 file hanno un numero esatto di righe che è "134". Ma diff mi dà "Linee aggiunte" e "Linee rimosse". Comunque sia sbagliato, hanno esattamente lo stesso numero di righe, non ci sono righe aggiunte o rimosse.
I file di testo di cui voglio trovare le differenze, hanno solo numeri scritti, forse è per questo che l'algortihm fallisce. Non sono riuscito a trovare alcuna opzione per impedirlo, anche se potrei sbagliarmi, intendo che dovrebbe esserci un'opzione per quello, ma di nuovo, non sono riuscito a trovare.
Questo è quello che ottengo (5 am.txt contro 6 am.txt, c'è un grosso problema):
Questo è quello che voglio (6 am.txt vs 7 am.txt, ha ancora problemi):
Modificare:
Dopo aver capito che non c'è utilità per farlo, mi sono occupato. Ho quasi fatto la stessa cosa di RedGrittyBrick. Questo script imita l'utilità diff in modo che io (o te) possiamo usarlo con diff2html.
Per usarlo con diff2html, basta cambiare linea
diff_stdout = os.popen("diff %s" % string.join(argv[1:]), "r")
per
diff_stdout = os.popen("script.py %s" % string.join(argv[1:]), "r")
e dai un nome a questo script come vuoi ( per eseguire Python 2.x , come diff2html):
import sys
f1=open(sys.argv[1],"r")
f1_read=f1.readlines()
f1.close()
f2=open(sys.argv[2],"r")
f2_read=f2.readlines()
f2.close()
changed={}
first_c = ""
for n in range(len(f1_read)):
if f1_read[n]!=f2_read[n]:
if first_c == "":
first_c=n+1
changed[first_c]=n+1
else:
first_c=""
#Let's imitate diff-utils...
for (x, y) in changed.items():
print "%d,%dc%d,%d" % (x,y,x,y)
for i in range(x,y+1):
sys.stdout.write("< %s" % f1_read[i-1])
print "---"
for i in range(x,y+1):
sys.stdout.write("> %s" % f2_read[i-1])
Risultati finali:
diff -a
(o, lo stesso diff --text
)?