Lire un fichier

Il existe 2 façons pour ouvrir un fichier en Python :

mon_fichier = open('fichier.txt','r',encoding='utf-8')

et

with open('fichier.txt','r',encoding='utf-8') as mon_fichier:

Ces 2 façons ouvrent toutes les deux un fichier fichier.txt en lecture seule ('r') avec un encodage en UTF-8.

La ligne de code mon_fichier = open('fichier.txt','r',encoding='utf-8') affecte à mon_fichier un objet python fournissant une interface _io.TextIOWrapper permettant d'effectuer diverses opérations sur le fichier ouvert, dont obtenir son contenu.

La ligne with open('fichier.txt','r',encoding='utf-8') as mon_fichier: effectue la même affectation, mais limite la validité de l'objet mon_fichier au bloc indenté immédiatement en dessous. Au-delà de ce bloc, le fichier n'est plus ouvert et y accéder via mon_fichier provoque une erreur d'exécution.

Lorsque l'on n'utilise pas de bloc with, il convient de fermer le fichier avec la méthode close() de l'objet mon_fichier. Si on omet cette opération, python se charge de fermer lui-même le fichier, mais seulement lorsqu'il est certain que l'objet mon_fichier n'est plus utilisé, ce qui peut être à la fin du programme.

Ces 2 codes sont donc équivalents :

# Premier code 
mon_fichier = open('fichier.txt','r',encoding='utf-8')
# des traitements...
mon_fichier.close()

# Second code
with open('fichier.txt','r',encoding='utf-8') as mon_fichier:
     pass # des traitements...

Pour lire le contenu, on pourra utiliser la méthode Python readlines()

with open('fichier.txt','r',encoding='utf-8') as mon_fichier:
    mon_objet = mon_fichier.readlines()

La méthode readlines() de l'objet mon_fichier affecte à mon_objet un tableau de chaînes de caractères correspondant, dans l'ordre de lecture, aux différentes lignes du fichier texte ouvert dans mon_objet.

Il convient donc alors d'utiliser une boucle for :

with open('fichier.txt','r',encoding='utf-8') as mon_fichier:
    for ligne in mon_fichier.readlines():
        print(ligne)

Ainsi, chaque ligne du fichier fichier.txt sera parcourue dans la variable ligne.