Maison > Article > développement back-end > Comment puis-je traiter efficacement des fichiers texte volumineux ligne par ligne sans dépasser les limites de mémoire ?
Lecture efficace de gros fichiers texte ligne par ligne : une approche soucieuse de la mémoire
La tâche à accomplir consiste à traiter un fichier texte volumineux qui dépasse 5 Go sans solliciter les ressources mémoire en chargeant l’intégralité de son contenu en même temps. Pour y parvenir, nous pouvons utiliser une approche alternative qui permet une lecture ligne par ligne sans utilisation excessive de la mémoire.
Solution : lecture de fichiers ligne par ligne
Au lieu d'utiliser la fonction readlines(), qui crée une grande liste en mémoire, nous pouvons parcourir l'objet fichier à l'aide d'une boucle for. Cette approche évite de créer une représentation en mémoire de l'intégralité du fichier, ce qui nous permet de le traiter sans consommer des quantités substantielles de mémoire.
Mise en œuvre à l'aide de Context Manager
Pour une utilisation efficace gestion des ressources, il est recommandé d'utiliser un gestionnaire de contexte avec open(). En encapsulant l'objet fichier dans une instruction with, nous garantissons que le fichier est correctement fermé après lecture, même si une exception est levée lors du traitement :
with open("log.txt") as infile: for line in infile: print(line)
Cet extrait de code ouvre le fichier "log.txt" à l'aide d'un gestionnaire de contexte. La boucle for parcourt ensuite le fichier ligne par ligne, et pour chaque ligne, elle effectue l'opération souhaitée, comme l'imprimer sur la console.
Avantages de cette approche :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!