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]
0
Stew 3 nov. 2019 à 14:24

1 réponse

Meilleure 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)
1
Guy 3 nov. 2019 à 12:22