C'est ce que j'ai fait jusqu'à présent:
3 Réponses :
Si vos fichiers étaient comme ceci:
Fichier 1:
Apple
banane
Kokonut
Orange p>
Fichier 2:
banane
fraise
Orange
Lime p>
Vous pouvez essayer quelque chose comme ceci: p> Ceci serait généré dans Notez comment la banane et l'orange n'apparaissent pas dans le fichier que nous avons créé. p> p> diff.txt code> et afficherait :
Apple
Kokonut
p>
En fait, il s'agit simplement de concaténer les 2 listes dans un seul fichier
D'accord. Je l'ai réparé afin qu'il ne teste pas avec le \ n code> s à la fin. Si cela ne fonctionne pas pour vous, pourriez-vous publier un échantillon de la sortie d'erreur ou de la traçabilité? Merci.
Ça marche mais il ne fait que retourner les deux fichiers dans diff.txt
N'as-tu voulu qu'un seul des fichiers à vérifier?
Fichier A = IP-10-232-10-149 IP-10-232-10-150 IP-10-232-10-151 IP-10-232-10-152 Fichier B = IP-10-232-10- 149 IP-10-232-10-152 Je veux seulement IP-10-232-10-150 IP-10-232-10-151
Tout ce qui est courant dans File2 ne devrait pas apparaître dans le nouveau fichier
Je l'ai changé pour que cela fonctionne maintenant. Au lieu de cela obtenir la différence symétrique, c'est maintenant la différence entre le premier fichier et le deuxième fichier.
OK, y a-t-il un moyen d'attacher les fichiers? cela devrait aider probablement
Qu'entendez-vous par «attacher»?
En fait, le script ne lit pas à travers toutes les lignes, il ne passe que des choses partiellement
Je pense que cela échoue en quelque sorte car il ajoute un article à l'ensemble si c'est la même chose, mais cela ne devrait pas avoir d'importance. Qu'est-ce qui ne va pas exactement?
Pas sûr, mais c'est juste itérant à travers certaines lignes et seulement donner une sortie partielle
Pourriez-vous donner un exemple d'entrée et d'exemple de sortie?
F1 = Datacube-2 FileServer IP-10-232-10-148 IP-10-232-10-149 IP-10-232-10-155 IP-10-232-10-157 IP-10-232-10-157 IP-10-232-10-10-10- 185 IP-10-232-10-201 IP-10-232-10-224 IP-10-232-10-228 F2 = IP-10-232-9-114 IP-10-232-8-254 IP- IP-10-12-0-150 IP-10-232-0-150 IP-10-232-10-70 IP-10-232-10-70 IP-10-232-105 -237 IP-10-232-19-87 IP-10-232-105-223
la sortie ne fait que traverser des choses partiellement et ne me donnant que ceux comme sortie
Je vais changer la réponse à utiliser .readline () code> au lieu de .readlines () code> comme cela pourrait être à cause de la mémoire.
En supposant que les fichiers soient triés ou classés de manière déterministe: pour des fichiers suffisamment volumineux, le coût unique de démarrage d'un sous-processus sera inférieur au coût de la logique dans Python. p> Exemple Utilisation de Sous-processus code> Module (Notez que Diff code> devrait renvoyer 1 code>, donc nous ne pouvons pas simplement Utilisez check_call code>): p>
Je n'ai pas eu la réponse
Voici de 2 façons d'accomplir cette tâche sans utiliser de difffibib. Ces méthodes sont différentes, car la structure de fichier d'entrée est différente.
node_list = ('ip-10-232-10-149', 'ip-10-232-10-150', 'ip-10-232-10-151', 'ip-10-232-10-152')
aws_instances_dnsname = ('ip-10-232-10-145','ip-10-232-10-146','ip-10-232-10-147','ip-10-232-10-149', 'ip-10-232-10-152')
ip_address_differences = [ip_address for ip_address in node_list if
ip_address not in aws_instances_dnsname]
print (ip_address_differences)
**OUTPUTS**
['ip-10-232-10-150', 'ip-10-232-10-151']
Ce code consiste simplement à ajouter dans tous les hôtes des deux fichiers, ce n'est pas vraiment de faire ce que je veux faire. (qui est de supprimer les duplicataires du fichier1 présent dans File2)
Votre question n'a pas demandé de supprimer l'adresse IP en double du fichier1 présent dans File2. Vous avez indiqué que la sortie du traitement de vos fichiers d'entrée devrait être - je ne veux que IP-10-232-10-150 IP-10-232-10-151 - que ma réponse fournit sans utiliser de diffibib.
Pourriez-vous inclure la sortie attendue et la production réelle? Cela aiderait grandement nos efforts pour vous aider.
Ce que vous essayez est trop compliqué. Peut-être est peut-être préférable de charger le deuxième fichier texte dans une chaîne ou une liste de chaînes, puis itérer des lignes uniquement de 'node_list.txt' et vérifiez simplement si les IPS du premier fichier 'node_list.txt' sont contenus dans la chaîne avec Python String .Find (), mais supprimer uniquement les symboles "\ n" et "\ r". Je l'ai fait mais dans C.
Le résultat que j'ai obtenu est surtout répéter toute la liste de fichiers1, donc il me manque quelque chose avec la recherche de la différence
Vous pouvez mettre
set () code> autour de votre IPS puis faire la différence de cette façon. Cela signifie que vous n'auriez pas besoin deDIFFLIB code>.@Getransit peut-être que je devrais essayer ça.
J'ai utilisé une bibliothèque et j'ai évité le problème tout à fait