**Définition** : un fichier texte est un fichier dont le contenu représente uniquement une suite de caractères (*lettres, chiffres*).\n",
"\n",
"Il possède un nom et a pour extension $\\texttt{'.txt'}$\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Remarque : Le bloc-note de Windows ou n'importe quel traitement de texte peut enregistrer les données saisies en un fichier texte ou encore appelé \"texte brut\"."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"1. **Comment consulter un fichier texte depuis Python**\n",
"2. **Écrire des données dans un fichier texte**\n",
"3. **Ajouter des données dans un fichier existant déjà**\n",
"4. **Analyse de données d'un fichier CSV**\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"[](https://mybinder.org/v2/gh/Fklag/SNT/master)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#
1. Comment consulter un fichier texte depuis Python
\n",
"Définition\n",
" \n",
"\n",
"Un fichier CSV est un fichier tableur, contenant des données (lettres, chiffres)\n",
"\n",
" \n",
"\n",
"Pour chaque ligne, les données sont séparées par un caractère de séparation (généralement une virgule, un point-virgule ou une tabulation).\n",
"\n",
" \n",
"\n",
"Un fichier CSV permet de traiter des données présentées dans un tableau, avec plus de facilité.\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* On peut lire un fichier $\\texttt{CSV}$ à l'aide d'un tableur comme EXCEL ou OPENOFFICE\n",
"\n",
"* Nous souhaiterions ouvrir un fichier $\\texttt{CSV}$ avec $\\texttt{Python}$ et exploiter les données."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exemple**\n",
"\n",
"Considérons le fichier $\\texttt{csv}$ $\\texttt{\"tableau.csv\"}$ correspondant à\n",
"\n",
"| | A | B |\n",
"|---|:------------:|:------------:|\n",
"| 1 | Valeurs de x | Valeurs de y |\n",
"| 2 | 0 | 0,5 |\n",
"| 3 | 2 | -0,5 |\n",
"| 4 | 5 | -2 |\n",
"| 5 | 7 | -3 |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Lecture en tant que fichier texte**"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Valeurs de x;Valeurs de y\n",
"0;0,5\n",
"2;-0,5\n",
"5;-2\n",
"7;-3\n",
"\n"
]
}
],
"source": [
"f=open('tableau.csv','r')\n",
"print(f.read())\n",
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Utiliser le module csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Pour mieux accéder à n'importe quel élément de chacune de ces lignes, on préfera utiliser le module $\\texttt{csv}$\n",
"\n",
"**Important** Saisir en préambule :"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import csv"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Lire un fichier csv**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lire le fichier $\\texttt{'doc.csv'}$ nous permettra soit d'afficher les données qu'il contient soit de collecter une partie d'entre elles et de les stocker dans une liste ou un dictionnaire ..."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| | Commande | Rôle |\n",
"|----------------------|:--------------------------------:|:---------------------|\n",
"| Ouvrir $\\texttt{f}$ | $\\texttt{f=open('doc.csv','r')}$ |Ouvre $\\texttt{f}$ en mode LECTURE $\\texttt{r}$ |\n",
"| Ouvrir $\\texttt{F}$ | $\\texttt{F=csv.reader(f,delimiter=';')}$ | Ouvre l'objet fichier $\\texttt{F}$ grâce au module $\\texttt{CSV}$ |\n",
"| | | Le paramètre $\\texttt{delimiter=';'}$ précise que $\\texttt{';'}$ sépare les éléments d'une ligne de $\\texttt{'doc.csv'}$ |\n",
"| Parcourir $\\texttt{F}$ | $\\texttt{for a in F :}$ | On parcourt les lignes de $\\texttt{F}$. $\\texttt{F}$ est donc itérable ! |\n",
"| Fermer $\\texttt{f}$ | $\\texttt{f.close()}$ | Fermer $\\texttt{f}$ |"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['Valeurs de x', 'Valeurs de y']\n",
"['0', '0,5']\n",
"['2', '-0,5']\n",
"['5', '-2']\n",
"['7', '-3']\n"
]
}
],
"source": [
"import csv\n",
"f=open('tableau.csv','r')\n",
"F=csv.reader(f,delimiter=';')\n",
"for ligne in F :\n",
" print(ligne)\n",
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Les éléments de $\\texttt{F}$ sont les listes des éléments de chaque ligne de $\\texttt{'tableau.csv'}$."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* **Ajouter une ligne de données à un fichier csv**"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| | Commande | Rôle |\n",
"|----------------------|:--------------------------------:|:---------------------|\n",
"| Ouvrir $\\texttt{f}$ | $\\texttt{f=open('doc.csv','a')}$ |Ouvre $\\texttt{f}$ en mode $\\texttt{a}$ |\n",
"| Ouvrir $\\texttt{F}$ | $\\texttt{F=csv.writer(f,delimiter=';')}$ | Ouvre l'objet fichier $\\texttt{F}$ grâce au module $\\texttt{CSV}$ |\n",
"| | | Le paramètre $\\texttt{delimiter=';'}$ précise que $\\texttt{';'}$ sépare les éléments d'une ligne de $\\texttt{'doc.csv'}$ |\n",
"| Écrire $\\texttt{F}$ | $\\texttt{F.writerow(['donnee1','donnee2'])}$ | On ajoute la ligne $\\texttt{'donnee1';'donnee2'}$ au fichier $\\texttt{'doc.csv'}$ |\n",
"| Fermer $\\texttt{f}$ | $\\texttt{f.close()}$ | Fermer $\\texttt{f}$ |"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Exemple**\n",
"\n",
"On souhaite ajouter à la fin du fichier $\\texttt{tableau.csv}$, sur la même ligne, les nombres $10$ et $20$ :"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import csv\n",
"f=open('tableau.csv','a')\n",
"F=csv.writer(f,delimiter=';')\n",
"F.writerow(['10','20'])\n",
"f.close()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"
\n",
" \n",
"**Exercice** : \n",
"\n",
"
Écrire un script $\\texttt{Python}$ qui calcule :
\n",
"
\n",
"
la moyenne des éléments de la plage $\\texttt{A2:A6}$ notée $\\texttt{a}$
\n",
"\n",
"
la moyenne des éléments de la plage $\\texttt{B2:B6}$ notée $\\texttt{b}$
\n",
"\n",
"
\n",
"\n",
"
Modifier ce script pour qu'il affiche ces nombres sur une même ligne, dans le fichier $\\texttt{tableau.csv}$:
\n",
"\n",
"
"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"| | A | B | C | D |\n",
"|---|:-------------:|:------------:|:-------------:|:---:|\n",
"| 1 | Valeurs de x | Valeurs de y | | |\n",
"| 2 | 0 | 0,5 | | |\n",
"| 3 | 2 | -0,5 | | |\n",
"| 4 | 5 | -2 | | |\n",
"| 5 | 7 | -3 | | |\n",
"| 6 | 10 | 20 | | |\n",
"| 7 | moyenne des x | 4.8 | moyenne des y | 3.0 |"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4.8 3.0\n"
]
}
],
"source": [
"import csv\n",
"import numpy as np\n",
"\n",
"f=open('tableau.csv','r')\n",
"F=csv.reader(f,delimiter=';')\n",
"X=[]\n",
"Y=[]\n",
"for s in F : # F est iterable\n",
" x=s[0].replace(',','.') # Remplace la virgule par un .\n",
" y=s[1].replace(',','.')\n",
" X.append(x)\n",
" Y.append(y)\n",
"\n",
"A=X[1::]\n",
"B=Y[1::]\n",
"\n",
"a = np.mean([float(a) for a in A])\n",
"b = np.mean([float(b) for b in B])\n",
"print(a,b)\n",
"f.close()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import csv\n",
"import numpy as np\n",
"\n",
"#Lecture des donnees\n",
"f=open('tableau.csv','r')\n",
"F=csv.reader(f,delimiter=';')\n",
"X=[]\n",
"Y=[]\n",
"for s in F : # F est iterable\n",
" x=s[0].replace(',','.') # Remplace la virgule par un .\n",
" y=s[1].replace(',','.')\n",
" X.append(x)\n",
" Y.append(y)\n",
"\n",
"A=X[1::]\n",
"B=Y[1::]\n",
"\n",
"a = np.mean([float(a) for a in A])\n",
"b = np.mean([float(b) for b in B])\n",
"f.close()\n",
"\n",
"#Ecriture des moyennes\n",
"f=open('tableau.csv','a')\n",
"F=csv.writer(f,delimiter=';')\n",
"F.writerow(['moyenne des x',str(a),'moyenne des y',str(b)])\n",
"f.close()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.1"
}
},
"nbformat": 4,
"nbformat_minor": 1
}