Categorías: Python | Programación

Un pequeño script que compara cada linea de dos archivos y dice cuales estan en A y no en B

En terminos matemaricos si A y B son un par de conjuntos y sus elementos son cada una de sus lineas entonces el resultado de este comando es B complemento.

Funcionamiento

Si tuvieramos los archivos

A

1
2
3
4
5

B

1
5

y ejecutaramos el comando ./comparar.py A B el resultado seria:

2
3
4

Implementacion en python

   1 #!/usr/bin/python
   2 
   3 "A little script that compare each line of two files and say wich are in file1 but not in file2"
   4 
   5 import sys
   6 
   7 if len(sys.argv)!=3:
   8     print sys.argv[0], "A little script that compare each line of two file and say wich are in file1 but not in file2"
   9     print "Usage:", sys.argv[0], "file1 file2"
  10     sys.exit(1)
  11 
  12 f=open(sys.argv[1], 'r');
  13 f2=open(sys.argv[2], 'r');
  14 lines=f.readlines()
  15 lines2=f2.readlines()
  16 
  17 found=False
  18 for line in lines:
  19     for line2 in lines2:
  20         if line==line2:
  21             found=True
  22             break
  23 
  24     if found==False:
  25         sys.stdout.write(line);
  26     else:
  27         found=False

Implementacion en shell

En la shell de unix esto se podria hacer con el comando

cat A B | sort | uniq -u


Python/Code/CompararArchivos (last edited 2010-09-20 20:48:26 by Kmilo)