Ho due grandi file di testo, ciascuno vicino a 2 GB. Mi serve qualcosa come diff f1.txt f2.txt
. C'è un modo per fare questo compito veloce in Python? Lo standard difflib
è troppo lento. Presumo che ci sia un modo più veloce, perché difflib
è completamente implementato in Python.diff due grandi file in Python
risposta
Come utilizzare difflib in modo che lo script possa gestire file di grandi dimensioni? Non caricare i file in memoria, ma scorrere i file dei file e diff in blocchi. Ad esempio, 100 righe alla volta.
import difflib
d = difflib.Differ()
f1 = open('bigfile1')
f2 = open('bigfile2')
b1 = []
b2 = []
for n, lines in enumerate(zip(f1,f2)):
if not (n % 100 == 0):
b1.append(lines[0])
b2.append(lines[1])
else:
diff = d.compare("".join(b1), "".join(b2))
b1 = []
b2 = []
print ''.join(list(diff))
diff = d.compare("".join(b1), "".join(b2))
print ''.join(list(diff))
f1.close()
f2.close()
sì, stavo provando una sceneggiatura simile. Troppo lento :( –
L'altra opzione veloce e portatile sarebbe chiedere agli utenti di installare diff utility per la piattaforma e quindi utilizzarla tramite python wrapper. –
Il 'difflib' di Python è lento solo non importa quello che fai. 1 MB ciascuno, prendi 0,5 secondi al migliore dei casi e pochi minuti nel caso peggiore. Il differenziale binario richiede 0,033 secondi. – Pithikos
- 1. Diff due schede in Vim
- 2. git diff tra due file diversi
- 3. Diff tra file singoli tra due commit
- 4. unire manualmente due file utilizzando diff
- 5. utilizzando comm a diff due file
- 6. (Vim) diff due subroutine nello stesso file
- 7. Diff due doc in XML in Ruby?
- 8. lettura piuttosto grandi file JSON in Python
- 9. Diff tra due elenchi di file .tar.gz in liunx
- 10. Concatena due file grandi panda. HDFStore HDF5
- 11. Panda: Diff di due Dataframes
- 12. Genera piuttosto diff html in Python
- 13. Come diff/sottrarre due liste in Clojure
- 14. "diff -u -B -w" in python?
- 15. Confronto di due file di testo in python
- 16. git diff due file sullo stesso ramo, stesso commettono
- 17. diff due file e mantieni solo linee nuove o modificate
- 18. diff'ing diff con diff?
- 19. Utilizzare l'output di due greps con diff
- 20. newline: ignora diff/diff su più righe/diff ignaro rif.
- 21. Cosa significano due segni più in un git diff?
- 22. Diff senza file
- 23. confrontare due file in UNIX
- 24. Elaborare grandi dati in python
- 25. Diff per 3 file binari
- 26. Apertura Un file JSON di grandi dimensioni in Python
- 27. Analisi di file pseudo-xml di grandi dimensioni in python
- 28. Gestione di file netCDF molto grandi in python
- 29. C'è un modo per diff due registri in vim?
- 30. diff restituisce l'intero file per file identici
Perché non utilizzare 'diff f1.txt f2.txt'? – delnan
@delnan: perché renderà la mia piattaforma di script dipendente. Ottenere la differenza tra i file è solo una delle altre parti dello script –
È possibile provarlo con l'accelerazione di psyco o con Unladen Swallow o PyPy build? – ncoghlan