Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Python

E/S de fichier Python

E/S de fichier Python

Dans ce didacticiel, vous découvrirez les opérations sur les fichiers Python. Plus précisément, ouvrir un fichier, le lire, y écrire, le fermer et diverses méthodes de fichiers que vous devez connaître.

Vidéo :Lire et écrire des fichiers en Python

Fichiers

Les fichiers sont des emplacements nommés sur le disque pour stocker les informations connexes. Ils sont utilisés pour stocker de manière permanente des données dans une mémoire non volatile (par exemple, un disque dur).

Étant donné que la mémoire vive (RAM) est volatile (qui perd ses données lorsque l'ordinateur est éteint), nous utilisons des fichiers pour une utilisation future des données en les stockant de manière permanente.

Lorsque nous voulons lire ou écrire dans un fichier, nous devons d'abord l'ouvrir. Lorsque nous avons terminé, il doit être fermé afin que les ressources liées au fichier soient libérées.

Ainsi, en Python, une opération de fichier se déroule dans l'ordre suivant :

  1. Ouvrir un fichier
  2. Lire ou écrire (effectuer l'opération)
  3. Fermer le fichier

Ouvrir des fichiers en Python

Python a un open() intégré fonction pour ouvrir un fichier. Cette fonction renvoie un objet fichier, également appelé handle, car il est utilisé pour lire ou modifier le fichier en conséquence.

>>> f = open("test.txt")    # open file in current directory
>>> f = open("C:/Python38/README.txt")  # specifying full path

Nous pouvons spécifier le mode lors de l'ouverture d'un fichier. En mode, on précise si on veut lire r , écrivez w ou ajouter a au dossier. Nous pouvons également spécifier si nous voulons ouvrir le fichier en mode texte ou en mode binaire.

La valeur par défaut est la lecture en mode texte. Dans ce mode, nous obtenons des chaînes lors de la lecture du fichier.

D'autre part, le mode binaire renvoie des octets et c'est le mode à utiliser lorsqu'il s'agit de fichiers non textuels comme des images ou des fichiers exécutables.

Mode Description
r Ouvre un fichier en lecture. (par défaut)
w Ouvre un fichier en écriture. Crée un nouveau fichier s'il n'existe pas ou tronque le fichier s'il existe.
x Ouvre un fichier pour une création exclusive. Si le fichier existe déjà, l'opération échoue.
a Ouvre un fichier pour l'ajouter à la fin du fichier sans le tronquer. Crée un nouveau fichier s'il n'existe pas.
t Ouvre en mode texte. (par défaut)
b Ouvre en mode binaire.
+ Ouvre un fichier pour mise à jour (lecture et écriture)
f = open("test.txt")      # equivalent to 'r' or 'rt'
f = open("test.txt",'w')  # write in text mode
f = open("img.bmp",'r+b') # read and write in binary mode

Contrairement à d'autres langues, le caractère a n'implique pas le nombre 97 jusqu'à ce qu'il soit encodé avec ASCII (ou autres encodages équivalents).

De plus, l'encodage par défaut dépend de la plate-forme. Sous windows, c'est cp1252 mais utf-8 sous Linux.

Donc, nous ne devons pas non plus compter sur l'encodage par défaut, sinon notre code se comportera différemment sur différentes plates-formes.

Par conséquent, lorsque vous travaillez avec des fichiers en mode texte, il est fortement recommandé de spécifier le type d'encodage.

f = open("test.txt", mode='r', encoding='utf-8')

Fermer des fichiers en Python

Lorsque nous avons terminé d'effectuer des opérations sur le fichier, nous devons fermer correctement le fichier.

La fermeture d'un fichier libérera les ressources qui étaient liées au fichier. Cela se fait en utilisant le close() méthode disponible en Python.

Python dispose d'un ramasse-miettes pour nettoyer les objets non référencés mais il ne faut pas compter dessus pour fermer le fichier.

f = open("test.txt", encoding = 'utf-8')
# perform file operations
f.close()

Cette méthode n'est pas entièrement sûre. Si une exception se produit lorsque nous effectuons une opération avec le fichier, le code se termine sans fermer le fichier.

Un moyen plus sûr consiste à utiliser un bloc try...finally.

try:
   f = open("test.txt", encoding = 'utf-8')
   # perform file operations
finally:
   f.close()

De cette façon, nous garantissons que le fichier est correctement fermé même si une exception est déclenchée qui provoque l'arrêt du déroulement du programme.

La meilleure façon de fermer un fichier est d'utiliser le with déclaration. Cela garantit que le fichier est fermé lorsque le bloc à l'intérieur du with l'instruction est quittée.

Nous n'avons pas besoin d'appeler explicitement le close() méthode. C'est fait en interne.

with open("test.txt", encoding = 'utf-8') as f:
   # perform file operations

Écrire dans des fichiers en Python

Pour écrire dans un fichier en Python, nous devons l'ouvrir en écriture w , ajoutez a ou création exclusive x mode.

Nous devons être prudents avec le w mode, car il écrasera dans le fichier s'il existe déjà. De ce fait, toutes les données précédentes sont effacées.

L'écriture d'une chaîne ou d'une séquence d'octets (pour les fichiers binaires) se fait à l'aide du write() méthode. Cette méthode renvoie le nombre de caractères écrits dans le fichier.

with open("test.txt",'w',encoding = 'utf-8') as f:
   f.write("my first file\n")
   f.write("This file\n\n")
   f.write("contains three lines\n")

Ce programme créera un nouveau fichier nommé test.txt dans le répertoire courant s'il n'existe pas. S'il existe, il est écrasé.

Nous devons inclure nous-mêmes les caractères de retour à la ligne pour distinguer les différentes lignes.

Lire des fichiers en Python

Pour lire un fichier en Python, il faut ouvrir le fichier en lecture r mode.

Il existe différentes méthodes disponibles à cet effet. Nous pouvons utiliser le read(size) méthode pour lire dans la taille nombre de données. Si la taille paramètre n'est pas spécifié, il lit et retourne jusqu'à la fin du fichier.

Nous pouvons lire le text.txt fichier que nous avons écrit dans la section ci-dessus de la manière suivante :

>>> f = open("test.txt",'r',encoding = 'utf-8')
>>> f.read(4)    # read the first 4 data
'This'

>>> f.read(4)    # read the next 4 data
' is '

>>> f.read()     # read in the rest till end of file
'my first file\nThis file\ncontains three lines\n'

>>> f.read()  # further reading returns empty sting
''

Nous pouvons voir que le read() la méthode renvoie une nouvelle ligne sous la forme '\n' . Une fois la fin du fichier atteinte, nous obtenons une chaîne vide lors d'une lecture ultérieure.

Nous pouvons changer notre curseur de fichier actuel (position) en utilisant le seek() méthode. De même, le tell() renvoie notre position actuelle (en nombre d'octets).

>>> f.tell()    # get the current file position
56

>>> f.seek(0)   # bring file cursor to initial position
0

>>> print(f.read())  # read the entire file
This is my first file
This file
contains three lines

Nous pouvons lire un fichier ligne par ligne en utilisant une boucle for. C'est à la fois efficace et rapide.

>>> for line in f:
...     print(line, end = '')
...
This is my first file
This file
contains three lines

Dans ce programme, les lignes du fichier lui-même incluent un caractère de saut de ligne \n . Donc, nous utilisons le paramètre de fin du print() fonction pour éviter deux retours à la ligne lors de l'impression.

Alternativement, nous pouvons utiliser le readline() méthode pour lire les lignes individuelles d'un fichier. Cette méthode lit un fichier jusqu'à la nouvelle ligne, y compris le caractère de nouvelle ligne.

>>> f.readline()
'This is my first file\n'

>>> f.readline()
'This file\n'

>>> f.readline()
'contains three lines\n'

>>> f.readline()
''

Enfin, le readlines() La méthode renvoie une liste des lignes restantes du fichier entier. Toutes ces méthodes de lecture renvoient des valeurs vides lorsque la fin de fichier (EOF) est atteinte.

>>> f.readlines()
['This is my first file\n', 'This file\n', 'contains three lines\n']

Méthodes de fichier Python

Il existe différentes méthodes disponibles avec l'objet fichier. Certains d'entre eux ont été utilisés dans les exemples ci-dessus.

Voici la liste complète des méthodes en mode texte avec une brève description :

Méthode Description
fermer() Ferme un fichier ouvert. Cela n'a aucun effet si le fichier est déjà fermé.
détacher() Sépare le tampon binaire sous-jacent du TextIOBase et le renvoie.
fileno() Renvoie un nombre entier (descripteur de fichier) du fichier.
flush() Vide le tampon d'écriture du flux de fichiers.
isatty() Renvoie True si le flux de fichiers est interactif.
lire(n ) Lit au plus n caractères du fichier. Lit jusqu'à la fin du fichier s'il est négatif ou None .
lisible() Renvoie True si le flux de fichiers peut être lu.
readline(n =-1) Lit et retourne une ligne du fichier. Lit au plus n octets si spécifié.
readlines(n =-1) Lit et retourne une liste de lignes du fichier. Lit au plus n octets/caractères si spécifié.
recherche(décalage ,de =SEEK_SET ) Change la position du fichier en décalage octets, en référence à de (début, courant, fin).
cherchable() Renvoie True si le flux de fichiers prend en charge l'accès aléatoire.
dire() Renvoie l'emplacement actuel du fichier.
tronquer(taille =None ) Redimensionne le flux de fichiers à taille octets. Si taille n'est pas spécifié, redimensionne à l'emplacement actuel.
inscriptible() Renvoie True si le flux de fichier peut être écrit.
écrire(s ) Écrit la chaîne s au fichier et renvoie le nombre de caractères écrits.
writelines(lignes ) Écrit une liste de lignes au fichier.

Python

  1. C Entrée Sortie (E/S)
  2. Types de données Python
  3. Opérateurs Python
  4. Dictionnaire Python
  5. E/S de fichier Python
  6. Python vérifie si le fichier existe | Comment vérifier si un répertoire existe en Python
  7. Python JSON :encoder (dumps), décoder (chargers) et lire le fichier JSON
  8. C - Fichier E/S
  9. C# - E/S de fichiers