Maison > développement back-end > Tutoriel Python > Une comparaison de quatre façons différentes de lire des fichiers en Python

Une comparaison de quatre façons différentes de lire des fichiers en Python

黄舟
Libérer: 2017-05-22 23:23:20
original
2149 Les gens l'ont consulté

Le traitement de texte de Python est un problème souvent rencontré L'article suivant vous présente principalement la comparaison de plusieurs méthodes différentes de Python lecture de fichiers Des informations, des exemples de codes détaillés sont. donné dans l'article pour que tout le monde puisse comprendre et apprendre. Les amis qui en ont besoin peuvent y jeter un œil ci-dessous.

Préface

Tout le monde sait que Python a de nombreuses façons de lire des fichiers, mais lorsque vous avez besoin de lire un fichier volumineux, différentes méthodes de lecture le feront ont des effets différents. Jetons un coup d’œil à l’introduction détaillée ci-dessous.

Scénario

Lire un gros fichier de 2,9 Go ligne par ligne

  • CPU i7 6820HQ

  • RAM 32G

Méthode

Diviser la lecture de chaque ligne une foisStringOpération

Les méthodes suivantes utilisent toutes la méthode with...as pour ouvrir le fichier.

L'instruction with est adaptée pour accéder aux ressources afin de garantir que, indépendamment du fait qu'une exception se produise lors de l'utilisation, les opérations de "nettoyage" nécessaires seront effectuées pour libérer les ressources, telles que la fermeture automatique des fichiers après utilisation et l'acquisition automatique. des verrous dans les fils et la libération, etc.

Méthode 1 : la méthode la plus courante pour lire des fichiers

with open(file, 'r') as fh:
 for line in fh.readlines():
 line.split("|")
Copier après la connexion

Résultat d'exécution : cela a pris 15,4346568584 secondes

Le moniteur système montre que la mémoire est soudainement passée de 4,8G à 8,4G. fh.readlines() enregistrera toutes les données de ligne lues dans la mémoire. Cette méthode convient aux petits fichiers.

Méthode 2

with open(file, 'r') as fh:
 line = fh.readline()
 while line:
 line.split("|")
Copier après la connexion

Résultat d'exécution : cela a pris 22,3531990051 secondes

Il n'y a presque aucun changement en mémoire. Parce qu'une seule ligne de données est accédée dans la mémoire, mais le temps est évidemment plus long que le temps précédent, ce qui n'est pas efficace pour le traitement ultérieur des données.

Méthode 3

with open(file) as fh:
 for line in fh:
 line.split("|")
Copier après la connexion

Résultat d'exécution : cela a pris 13,9956979752 secondes

Il n'y a presque aucun changement en mémoire. La vitesse est également plus rapide que la deuxième méthode.

for line in fh traite le fichier objet fh comme un itérable, qui utilise automatiquement les E/S mises en mémoire tampon et la gestion de la mémoire afin que vous n'ayez pas à vous soucier des fichiers volumineux. C'est une manière très pythonique !

Module d'entrée de fichier de la méthode 4

for line in fileinput.input(file):
 line.split("|")
Copier après la connexion

Résultat d'exécution : cela a pris 26,1103110313 secondes

Mémoire augmentée de 200 -300 Mo, la vitesse la plus lente ci-dessus.

Résumé

Les méthodes ci-dessus sont à titre de référence uniquement. Les trois méthodes reconnues pour lire des fichiers volumineux sont toujours les meilleures. Cependant, la situation spécifique dépend toujours des performances de la machine et de la complexité du traitement des données.

[Recommandations associées]

1. Exemple de code de n lignes après que Python ait lu le fichier

2 Utilisez Python pour lire le fichier. fichier Mini Programme

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal