class: center, middle # Gestion de fichiers --- # Lecture du contenu d'un fichier * Fonction
open
(argument
r
pour
read
) : ```python >>> inputfile = open('fichier.txt', 'r') ``` * Type : ```python >>> inputfile = open('fichier.txt', 'r') >>> inputfile <_io.TextIOWrapper name='fichier.txt' mode='r' encoding='UTF-8'> ``` * Contenu du fichier : ```python >>> lignes = inputfile.readlines() >>> lignes ['ligne1\n', 'ligne2\n'] >>> for ligne in lignes: ... print(ligne) ligne1 ligne2 >>> inputfile.close() ``` --- # Ouverture et fermeture propres Avec **with**, la fermeture du fichier est gérée automatiquement. ```python >>> with open('fichier.txt', 'r') as inputfile: ... lignes = inputfile.readlines() ... for ligne in lignes: ... print(ligne) ... ligne1 ligne2 >>> ``` Une fois que l'on sort du bloc d'indentation introduit par
with
, la méthode
.close()
est utilisée. --- # Readlines mais pas que ! ```python >>> with open('fichier.txt', 'r') as inputfile: ... inputfile.read() ... 'ligne1\nligne2\n' >>> ``` La méthode
read()
lit la totalité du fichier. ```python >>> with open('fichier.txt', 'r') as inputfile: ... ligne = inputfile.readline() ... while ligne != "": ... print(ligne) ... ligne = inputfile.readline() ... ligne1 ligne2 >>> ```
La méthode
readline()
lit une ligne d'un fichier et la renvoie. Il faut rappeler la méthode pour lire la ligne suivante.
--- # Qui dit mieux ? ```python >>> with open('fichier.txt', 'r') as inputfile: ... for ligne in inputfile: ... print(ligne) ... ligne1 ligne2 >>> ```
La boucle
for
permet de lire le fichier ligne par ligne. On ajoute souvent l'utilisation de
strip()
qui permet de supprimer les sauts de ligne.
```python >>> with open('fichier.txt', 'r') as inputfile: ... for ligne in inputfile: ... ligneClean = ligne.strip() ... print(ligneClean) ... ligne1 ligne2 >>> ``` --- # Ecriture dans un fichier ```python >>> contenus = ['ligne1', 'ligne2', 'ligne3'] >>> with open('sortie.txt', 'w') as outputfile: ... for contenu in contenus: ... outputfile.write(contenu) ... ```
De la même manière que pour écrire, on peut utiliser
with
. Par contre, on spécifie que l'on est en mode écriture via le
w
pour
write
.
Remarque :
on peut également utiliser le mode
a
pour
append
afin d'ajouter du contenu à un fichier existant.
with
permet également d'ouvrir plusieurs fichiers en même temps.
```python >>> with open('fichier.txt', 'r') as inputfile, \ ... open('sortie.txt', 'w') as outputfile: ... for ligne in inputfile: ... outputfile.write('>>> ' + ligne) ``` --- # Travaux Pratiques
Créer un programme Python nommé
fichier.py
ou un
notebook
Jupyter nommé
fichier.ipynb
permettant de transformer le fichier tabulé fichier.txt en un fichier au format FASTA en 25 minutes :
* ouverture en **lecture** du fichier tabulé * ouverture en **écriture** du fichier FASTA * **lecture** du fichier tabulé * **écriture** dans le fichier FASTA Fichier tabulé : ````bash Nom_Sequence Sequence Start Stop Brin ``` Fichier FASTA : ````bash >Nom_Sequence Start..Stop Brin Sequence ```