Maison  >  Article  >  développement back-end  >  Compréhension approfondie des méthodes de lecture et d'écriture de fichiers Python

Compréhension approfondie des méthodes de lecture et d'écriture de fichiers Python

高洛峰
高洛峰original
2017-03-17 17:14:481451parcourir

1.open

Après avoir utilisé open pour ouvrir un fichier, assurez-vous d'appeler la méthode close() du fichierobject. Par exemple, vous pouvez utiliser l'instruction try/finally pour vous assurer que le fichier peut être fermé à la fin.

fichier_objet = open('thefile.txt')

essayer :

tous_the_text = file_object.read( )

finalement :

file_object.close( )

Remarque : vous ne pouvez pas mettre l'instruction open dans le bloc try car elle apparaîtra lorsque le fichier est ouvert Lorsqu'une exception se produit, l'objet fichier file_object ne peut pas exécuter la méthode close().

2. Lire le fichier

Lire le fichier texte

input = open('data', 'r')

#Le deuxième paramètre est par défaut r

input = open('data')

Lire le fichier binaire

input = open('data', 'rb')

Lire tout le contenu

file_object = open('thefile.txt')

essayez :

all_the_text = file_object.read( )

enfin :

file_object.close( )

Lire les octets fixes

file_object = open('abinfile', 'rb' )

essayer :

while True :

chunk = file_object.read(100)

if pas de morceau :

                                                                                                                                                                                                                   🎜>

Lire chaque ligne

list

_of_all_the_lines = file_object.

readline

s( )

si le fichier est un fichier Texte, vous pouvez également parcourir directement l'objet fichier pour obtenir chaque ligne :

pour ligne dans fichier_objet : ligne de processus

3. Écrire des fichiers Écrire des fichiers texte

output = open('data', 'w')

Écrire des fichiers binaires

output = open('data', 'wb')

Ajouter un fichier d'écriture

sortie = open('data', 'w')

Écrire les données

file_object = open('thefile.txt', 'w')

file_object.write(all_the_text)

file_object .close( )

Écrire plusieurs lignes

file_object.writelines(list_of_text_strings)

Notez que l'appel de writelines pour écrire plusieurs lignes aura un impact sur les performances. Il est plus élevé que l'utilisation de write to write une fois.

Lors du traitement des fichiers journaux, nous rencontrons souvent une telle situation : le fichier journal est énorme et il est impossible de lire l'intégralité du fichier dans la mémoire pour le traiter en une seule fois. Par exemple, il doit être traité. un ordinateur avec une mémoire physique de 2 Go En traitant un fichier journal de 2 Go sur la machine, nous pouvons vouloir traiter seulement 200 Mo de son contenu à la fois.

Dans

Python

, l'objet File intégré fournit directement une

fonction readlines(sizehint)

pour accomplir une telle chose. Prenons comme exemple le code suivant :

file = open('test.log', 'r')sizehint = 209715200 # 200M

position

= 0lines = file.readlines(sizehint)while pas file.tell() - position <0 : position = file.tell() lines = file.readlines(sizehint)Chaque fois que la fonction readlines(sizehint) est appelée, environ 200 Mo de données seront renvoyé, et toutes les données renvoyées doivent être des données de ligne complètes. Dans la plupart des cas, le nombre d'octets des données renvoyées sera légèrement supérieur à la valeur spécifiée par sizehint (sauf lorsque la fonction readlines(sizehint) est appelée pour la dernière fois. ). Normalement, Python ajustera automatiquement la valeur sizehint spécifiée par l'utilisateur à un multiple entier de la taille du cache interne. file est un type spécial en python, qui est utilisé pour faire fonctionner des fichiers externes dans les programmes python. Tout en Python est un objet, et file ne fait pas exception. Voyons d'abord comment créer un objet fichier :

file(name[, mode[, buffering]]) La fonction file() est utilisée pour créer un objet fichier, qui a un alias open(), peut-être plus clairement, ce sont des

fonctions intégrées

. Jetons un coup d'œil à ses paramètres. Ses paramètres sont tous passés sous forme de

string

. name est le nom du fichier.

mode est le mode ouvert, les valeurs facultatives sont r w a U, qui représentent respectivement la lecture (par défaut) et l'écriture qui prennent en charge divers sauts de ligne. Si vous ouvrez un fichier en mode w ou a, si le fichier n'existe pas, il sera créé automatiquement. De plus, lorsque vous utilisez le mode w pour ouvrir un fichier existant, le contenu du fichier d'origine sera effacé, car la marque d'opération de fichier initiale se trouve au début du fichier. Si vous effectuez une opération d'écriture à ce moment, le contenu d'origine. sera sans aucun doute supprimé. Pour des raisons historiques, le caractère de nouvelle ligne a différents modes selon les systèmes. Par exemple, sous Unix, il s'agit d'un n et sous Windows, il s'agit de « rn ». L'ouverture d'un fichier en mode U prend en charge tous les modes de nouvelle ligne, ce qui signifie « ». r' 'n' 'rn' peuvent tous représenter des nouvelles lignes, et il y aura un tuple utilisé pour stocker les caractères de nouvelle ligne utilisés dans ce fichier. Cependant, bien qu'il existe de nombreux modes pour les sauts de ligne, lors de la lecture en Python, n est utilisé à la place. Après le caractère mode, vous pouvez également ajouter les deux identifiants b et t, qui indiquent respectivement que le fichier peut être lu et écrit en même temps et que le fichier peut être ouvert en mode binaire ou en mode texte (par défaut).

buffering S'il est 0, cela signifie pas de mise en mémoire tampon ; s'il est 1, cela signifie "mise en mémoire tampon de ligne" ; si c'est un nombre supérieur à 1, cela signifie la taille du tampon, qui doit être dans octets.

L'objet fichier a ses propres propriétés et méthodes. Examinons d'abord les attributs du fichier.

fermé #Marque si le fichier a été fermé, réécrit par close()

encodage #Encodage du fichier

mode #Mode ouvert

nom #Fichier name

newlines #Le mode nouvelle ligne utilisé dans le fichier est un tuple

softspace #boolean de type, généralement 0, qui est censé être utilisé pour print

Méthodes de lecture et d'écriture de fichiers :

F.read([size]) #size est la longueur de la lecture, en octets

F.readline ([taille ])

#Lire une ligne Si la taille est définie, il est possible de renvoyer seulement une partie d'une ligne

F.readlines([taille])

#Lire chaque ligne du fichier Agit en tant que membre d'une liste et renvoie la liste. En fait, il est implémenté en interne en appelant readline() dans une boucle. Si le paramètre size est fourni, size représente la longueur totale du contenu lu, ce qui signifie que seule une partie du fichier peut être lue.

F.write(str)

#Write str dans le fichier, write() n'ajoutera pas de caractère de nouvelle ligne après str

F.writelines( seq)

#Écrivez tout le contenu de seq dans le fichier. Cette fonction écrit également fidèlement, sans rien ajouter après chaque ligne. Autres méthodes de

fichier :

F.close()

#Fermez le fichier. Python fermera automatiquement un fichier une fois qu'il n'est plus utilisé. Cependant, cette fonction n'est pas garantie. Il est préférable de prendre l'habitude de le fermer vous-même. Si un fichier est opéré après sa fermeture, une ValueError sera générée

F.flush()

#Écrire le contenu du tampon sur le disque dur

F.fileno()

#Renvoie un long entier "étiquette de fichier"

F.isatty()

#Si le fichier est un terminal fichier de périphérique (dans les systèmes Unix)

F.tell()

# Renvoie la position actuelle de la marque d'opération de fichier, avec le début du fichier comme origine

F.next()

#Retournez à la ligne suivante et déplacez l'indicateur d'opération de fichier vers la ligne suivante. Lorsqu'un fichier est utilisé dans une instruction telle que for ... in file, la fonction next() est appelée pour implémenter le parcours.

F.seek(offset[,whence])

#Déplacez la marque d'opération de fichier vers la position de décalage. Ce décalage est généralement calculé par rapport au début du fichier et est généralement un nombre positif. Mais ce n'est pas nécessairement le cas si le paramètre whence est fourni. whence peut être 0 pour recommencer le calcul depuis le début, et 1 pour utiliser la position actuelle comme origine. 2 indique que la fin du fichier est utilisée comme origine du calcul. Il convient de noter que si le fichier est ouvert en mode a ou a, la marque d'opération de fichier reviendra automatiquement à la fin du fichier à chaque fois qu'une opération d'écriture est effectuée.

F.truncate([size])

#Couper le fichier à la taille spécifiée. La valeur par défaut est de couper à la position de la marque d'opération actuelle du fichier. Si la taille est supérieure à la taille du fichier, selon le système, le fichier peut ne pas être modifié, le fichier peut être complété à la taille correspondante avec 0, ou du contenu aléatoire peut être ajouté.


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!

Déclaration:
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