ce code fonctionne parfaitement le seul problème qu'il ne fonctionne pas avec les gros fichiers texte. Fichier texte de 1 Go. Que puis-je faire pour corriger?
import os
file_1 = open('file1.txt', 'r', encoding='utf8').read().splitlines()
file_2 = open('file2.txt', 'r', encoding='utf8').read().splitlines()
[file_2.remove(l) for l in file_1 if l in file_2]
with open('file2.txt', 'w') as new_file:
[new_file.write(l + '\n') for l in file_2]
1 réponse
Vous devez lire les fichiers sans enregistrer le contenu en mémoire. Vous pouvez le faire en utilisant with
sur les fichiers d'entrée
with open(r'C:\Users\Guy.SA\Desktop\fileB.txt', 'r') as file_2, open(r'C:\Users\Guy.SA\Desktop\fileC.txt', 'w') as new_file:
for line_2 in file_2:
with open(r'C:\Users\Guy.SA\Desktop\fileA.txt', 'r') as file_1:
for line_1 in file_1:
if line_1 == line_2:
break
else:
new_file.write(line_2)
Questions connexes
Questions liées
De nouvelles questions
python
Python est un langage de programmation multi-paradigme, typé dynamiquement et polyvalent. Il est conçu pour être rapide à apprendre, comprendre, utiliser et appliquer une syntaxe propre et uniforme. Veuillez noter que Python 2 est officiellement hors support à partir du 01-01-2020. Néanmoins, pour les questions Python spécifiques à la version, ajoutez la balise [python-2.7] ou [python-3.x]. Lorsque vous utilisez une variante Python (par exemple, Jython, PyPy) ou une bibliothèque (par exemple, Pandas et NumPy), veuillez l'inclure dans les balises.