Comparer deux fichiers différents ligne par ligne en python
J'ai deux fichiers différents et je veux comparer leur contenu ligne par ligne et d'écrire leur commun contenu dans un fichier différent. Notez que les deux d'entre eux contiennent certains espaces vides.
Voici mon pseudo code:
file1 = open('some_file_1.txt', 'r')
file2 = open('some_file_2.txt', 'r')
FO = open('some_output_file.txt', 'w')
for line1 in file1:
for line2 in file2:
if line1 == line2:
FO.write("%s\n" %(line1))
FO.close()
file1.close()
file2.close()
Cependant, en faisant cela, j'ai eu beaucoup d'espaces vides dans mon FO fichier. Semble comme le commun des espaces sont également écrites. Je veux écrire, seule la partie texte. Quelqu'un peut-il m'aider.
Par exemple: mon premier fichier (fichier1) contient des données:
Config:
Hostname = TUVALU
BT:
TS_Ball_Update_Threshold = 0.2
BT:
TS_Player_Search_Radius = 4
BT:
Ball_Template_Update = 0
tandis que le second fichier (fichier2) contient des données:
Pole_ID = 2
Width = 1280
Height = 1024
Color_Mode = 0
Sensor_Scale = 1
Tracking_ROI_Size = 4
Ball_Template_Update = 0
Si vous remarquez, les deux dernières lignes de chaque fichiers sont les mêmes, donc, je veux écrire ce fichier dans mon FO fichier. Mais, le problème avec mon approche est que, il écrit la commune de l'espace vide également. Dois-je utiliser des regex pour ce problème? Je n'ai pas d'expérience avec les regex.
source d'informationauteur Sanchit
Vous devez vous connecter pour publier un commentaire.
Cette solution lit les deux fichiers en un seul passage, ce qui exclut les lignes vides, et imprime des lignes communes quelle que soit leur position dans le fichier:
Encore un autre exemple...
Et si vous voulez éliminer les lignes vides, il suffit de modifier l'instruction if:
if line1.strip() and line1 == line2:
.strip()
supprime toutes les attaque et de fuite des espaces, donc si c'est tout ce qui est sur une ligne, il deviendra une chaîne vide""
qui est considéré comme faux.Une fois le fichier objet est itérée, il est exausted.
Utilisation
fichier.rechercher
(ou de fermer/ouvrir le fichier) pour rembobiner le fichier:Si l'ordre est conservé entre les fichiers, vous pouvez aussi préférer le
difflib
. Bien que Robᵩ résultat est le véritable standard pour les intersections vous devriez être à la recherche d'un accidenté de type diff:Cela dit, il a un comportement différent de ce que vous avez demandé (l'ordre est important), même si dans ce cas le même résultat est produite.
J'ai juste été confrontés au même défi, mais j'ai pensé "Pourquoi la programmation de cette en Python si vous pouvez résoudre ce problème avec un simple "grep"?, ce qui a conduit à le code Python suivant:
Le truc derrière cela est la suivante:
grep -Fvf file1.txt file2.txt
vérifie si toutes les entrées de file2.txt sont présents dans file1.txt. En faisant cela, dans les deux directions, nous pouvons voir si le contenu des deux fichiers sont "égaux". J'ai mis "l'égalité" entre guillemets parce que les lignes dupliquées sont pas pris en compte dans cette façon de travailler.Évidemment, c'est juste un exemple: vous pouvez remplacer
grep
par une ligne de commande outil de comparaison de fichiers.Essayez ceci:
Si vous êtes spécifiquement à la recherche pour obtenir la différence entre les deux fichiers, cela peut aider: