Skip to article frontmatterSkip to article content

c’est important de savoir utiliser les fichiers depuis un programme

ouvrir un fichier en écriture ('w')

pour commencer voyons comment créer un fichier depuis un programme

# c'est comme ça qu'on crée un fichier pour écrire dedans
#                le mode:  ↓↓↓
with open("tmp-names.txt", 'w') as writer:
    print("Achille", file=writer)
    print("Bob", file=writer)
    print("Charlie", file=writer)

si vous faites tourner ça sur votre ordi, vous devez constater la présence d’un nouveau fichier tmp-names.txt dans votre explorateur de fichier; et dedans nous avons écrit trois lignes avec les 3 noms:

que retenir ?

et aussi - mais c’est un peu plus subtil:

d’ailleurs dans la même veine, un petit quiz:

ouvrir un fichier en lecture ('r')

bien sûr ce fichier, on aurait pu l’écrire avec un éditeur de texte
mais peu importe comment on l’a créé, maintenant voyons comment on peut le relire par programme
c’est la même idée exactement, mais on va cette fois passer à open un mode d’ouverture qui est 'r' - pour, wait for it... read eh oui !

with open("tmp-names.txt", 'r') as reader:
    for line in reader:
        line = line.strip()
        print(f"hello {line}")
hello Achille
hello Bob
hello Charlie

à essayer:

petit TP:

que retenir ?

str.split() et str.join()

on ne va pas les passer toutes en revue bien sûr, mais bon certaines sont plus utiles que d’autres

notamment voici split() et join() en action

split(c)

# une chaine

s = "nom;prénom;date de naissance"
# on découpe son contenu
# ici je vais préciser un caractère
s.split(';')
['nom', 'prénom', 'date de naissance']

split()

remarquez qu’ici j’ai dû préciser le séparateur ;
si les mots sont séparés, de manière plus usuelle, par des espaces, on fera simplement

s2 = "nom prénom date-de-naissance"
s2.split()
['nom', 'prénom', 'date-de-naissance']

et l’avantage - outre que c’est plus concis - c’est que ça va découper aussi les tabulations et les NEWLINE

s3 = "nom\tprénom\ndate-de-naissance"

# voyons déjà ce que signifie cette notation absconse
print(s3)
nom	prénom
date-de-naissance
# sans rien préciser à split, il découpe les 3 sortes d'espaces
s3.split()
['nom', 'prénom', 'date-de-naissance']

join()

dans l’autre sens, on peut facilement reconstruire une chaine en mettant bout à bout les morceaux d’une liste, avec cette méthode qui est un peu le complèment de split()

L = s.split(';')
L
['nom', 'prénom', 'date de naissance']
# je peux recoller avec n'importe quel autre séparateur
'|'.join(L)
'nom|prénom|date de naissance'
# vraiment n'importe quoi
'-=-'.join(L)
'nom-=-prénom-=-date de naissance'

que retenir ?