{"id":2503,"date":"2020-06-06T17:33:38","date_gmt":"2020-06-06T15:33:38","guid":{"rendered":"https:\/\/www.mathweb.fr\/euclide\/?page_id=2503"},"modified":"2023-04-16T16:19:27","modified_gmt":"2023-04-16T14:19:27","slug":"manipulation-de-fichiers-en-python","status":"publish","type":"page","link":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/","title":{"rendered":"Manipulation de fichiers en Python"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Nous allons parler sur cette page de la manipulation de fichiers en Python, notion au programme de 1\u00e8re NSI.<\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg\" alt=\"\" class=\"wp-image-2515\" width=\"250\" height=\"232\" srcset=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg 1000w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python-600x556.jpg 600w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python-300x278.jpg 300w, https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python-768x711.jpg 768w\" sizes=\"auto, (max-width: 250px) 100vw, 250px\" \/><figcaption>Manipulation de fichiers en Python<\/figcaption><\/figure><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Cr\u00e9ation d&rsquo;un fichier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons cr\u00e9er un fichier nomm\u00e9 <em>lipsum.txt<\/em> dans lequel nous allons mettre une cha\u00eene de caract\u00e8res.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce n&rsquo;est pas tr\u00e8s long:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">lipsum = 'Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Cur- abitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum. Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris. Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Mae- cenas lacinia. Nam ipsum ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cur- sus pulvinar lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa. Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst. Integer tempus convallis augue. Etiam facilisis. Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor vitae risus porta vehicula. Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a fau- cibus semper, leo velit ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue quam, in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et vehicula libero dui cursus dui. Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer. Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus eros, malesuada sit amet, fer- mentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem egestas dui, et convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies non, pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio. Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo eu urna porta tincidunt. Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.'\nNomFichier = 'lipsum.txt'\nFichier = open(NomFichier, 'w' , encoding='utf8')\nFichier.write( lipsum )\nFichier.close()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ceci nous servira de base pour les exercices suivants.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qu&rsquo;avons-nous fait ici ? Et bien, nous avons cr\u00e9er un <em>objet<\/em> avec la fonction <em>open()<\/em> (cette notion d&rsquo;objet est au programme de Terminale). \u00c0 cet objet sont rattach\u00e9es plusieurs <em>m\u00e9thodes<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour avoir la liste des m\u00e9thodes que l&rsquo;on peut utiliser sur ce type d&rsquo;objet, on tape dans la console Python :<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">>>> dir(Fichier)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">et on voit alors s&rsquo;afficher toutes les m\u00e9thodes :<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">['_CHUNK_SIZE', '<strong>class<\/strong>', '<strong>del<\/strong>', '<strong>delattr<\/strong>', '<strong>dict<\/strong>', '<strong>dir<\/strong>', '<strong>doc<\/strong>', '<strong>enter<\/strong>', '<strong>eq<\/strong>', '<strong>exit<\/strong>', \n'<strong>format<\/strong>', '<strong>ge<\/strong>', '<strong>getattribute<\/strong>', '<strong>gt<\/strong>', '<strong>hash<\/strong>', '<strong>init<\/strong>', '<strong>init_subclass<\/strong>', '<strong>iter<\/strong>', '<strong>le<\/strong>', '<strong>lt<\/strong>', \n'<strong>ne<\/strong>', '<strong>new<\/strong>', '<strong>next<\/strong>', '<strong>reduce<\/strong>', '<strong>reduce_ex<\/strong>', '<strong>repr<\/strong>', '<strong>setattr<\/strong>', '<strong>sizeof<\/strong>', '<strong>str<\/strong>', '<strong>subclasshook<\/strong>', \n'_checkClosed', '_checkReadable', '_checkSeekable', '_checkWritable', '_finalizing', 'buffer', \n'close', 'closed', \n'detach', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'line_buffering', 'mode', \n'name', 'newlines', 'read', 'readable', 'readline', 'readlines', 'reconfigure', 'seek', \n'seekable', 'tell', 'truncate', 'writable', 'write', 'write_through', 'writelines']<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans notre programme, nous avons utilis\u00e9 la m\u00e9thode <em>write<\/em>, qui permet d&rsquo;<em>\u00e9crire<\/em> dans un fichier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Notez que j&rsquo;ai pr\u00e9cis\u00e9 l&rsquo;encodage quand j&rsquo;ai cr\u00e9\u00e9 l&rsquo;objet (encoding=&rsquo;utf8&prime;) et que j&rsquo;ai pass\u00e9 en deuxi\u00e8me param\u00e8tre la lettre &lsquo;w&rsquo; (pour <em>writable<\/em>). Nous avons le choix entre les param\u00e8tres suivants:<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>&lsquo;r&rsquo; : pour cr\u00e9er un fichier en mode <em>lecture<\/em> (<em>reading<\/em> mode);<\/li><li>&lsquo;w&rsquo; : pour cr\u00e9er un fichier en mode <em>\u00e9criture<\/em> (<em>writing <\/em>mode);<\/li><li>&lsquo;a&rsquo; : pour cr\u00e9er un fichier en mode <em>ajout<\/em> (<em>appending <\/em>mode);<\/li><li>&lsquo;r+&rsquo; : pour cr\u00e9er un fichier en mode \u00ab\u00a0<em>reading<\/em> and <em>writing<\/em> mode\u00a0\u00bb;<\/li><li>w+ : pour cr\u00e9er un fichier en mode \u00ab\u00a0<em>writing<\/em> and <em>reading<\/em> mode\u00a0\u00bb;<\/li><li>&lsquo;rb&rsquo; : pour lire en mode <em>binaire<\/em> (<em>binary<\/em> mode);<\/li><li>&lsquo;wb&rsquo; : pour \u00e9crire en mode binaire.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Lecture d&rsquo;un fichier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour lire le contenu brut d&rsquo;un fichier, on fera:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt' , 'r', encoding = 'utf8')\ncontenu = Fichier.read()\nprint( contenu )<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Manipulation du contenu<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Comme vous pourrez le constater, il n&rsquo;y a qu&rsquo;une seule ligne dans ce fichier, et ce n&rsquo;est pas pratique. J&rsquo;aimerais donc ajouter un retour tous les 20 mots. Je vais donc \u00e9crire quelque chose qui ressemble \u00e0 cela:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt' , 'r' , encoding = 'utf8')\ncontenu = Fichier.read()\nlignes = []\n\nliste_mots = contenu.split(' ')\n\nfor n in range( len(liste_mots) ):\n    if n == 0:\n        item_lignes = ''\n    elif n % 21 == 0:\n        lignes.append( item_lignes )\n        item_lignes = ''\n    else:\n        item_lignes += ' ' + liste_mots[n]\n\nfor i in lignes:\n    print( i )<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Modification d&rsquo;un fichier<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant, j&rsquo;aimerais remplacer le contenu du fichier par toutes les lignes que je viens d&rsquo;obtenir.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt' , 'r', encoding = 'utf8')\ncontenu = Fichier.read()\nFichier.close()\nlignes = []\n\nliste_mots = contenu.split(' ')\n\nfor n in range( len(liste_mots) ):\n    if n == 0:\n        item_lignes = ''\n    elif n % 21 == 0:\n        lignes.append( item_lignes )\n        item_lignes = ''\n    else:\n        item_lignes += ' ' + liste_mots[n]\n\ncontenu = ''\nfor i in lignes:\n    contenu += i + '\\n'\ncontenu = contenu[:-1]\nFichier = open('lipsum.txt', 'w' , encoding = 'utf8')\nFichier.write( contenu )\nFichier.close()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce dernier script, j&rsquo;ouvre le fichier texte en mode <em>lecture<\/em> puis je le ferme. Ensuite, je fais mes manipulations et ensuite, \u00e0 partir de la ligne 17, je red\u00e9finis le contenu en cr\u00e9ant une cha\u00eene de caract\u00e8res et en ajoutant un \u00ab\u00a0\\n\u00a0\u00bb (retour \u00e0 la ligne) \u00e0 la fin de chaque ligne. J&rsquo;enl\u00e8ve ensuite le dernier \u00ab\u00a0\\n\u00a0\u00bb qui ne sert \u00e0 rien (avec \u00ab\u00a0contenu[-1]\u00a0\u00bb).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Bien entendu, on peut faire plus simple. En effet, le passage par une liste des lignes n&rsquo;est pas n\u00e9cessaire car on peut directement incruster un \u00ab\u00a0\\n\u00a0\u00bb tous les 20 mots:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">import re\n# --- lecture\nFichier = open('lipsum.txt' , 'r+', encoding = 'utf8')\ncontenu = Fichier.read()\nFichier.close()\n#--- Liste contenant la position de toutes les espaces dans le cha\u00eene de caract\u00e8res \"contenu\"\nL = [ m.start() for m in re.finditer(' ', contenu)]\n#--- On parcourt la liste L en commen\u00e7ant par la 20i\u00e8me espace (en position 19 \u00e0 partir de 0), par pas de 20\nfor p in range(19, len(L) , 20):\n    position = L[p]\n    contenu = contenu[:position] + '\\n' + contenu[position+1:]\n#--- On r\u00e9\u00e9crit le fichier texte avec le nouveau contenu\nFichier = open('lipsum.txt', 'w' , encoding = 'utf8')\nFichier.write( contenu )\nFichier.close()<\/pre>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>Note :<\/strong> je n&rsquo;ai pas ouvert le fichier texte en mode &lsquo;r+&rsquo; car je voulais remplacer le contenu, et non ajouter du contenu apr\u00e8s ce qui \u00e9tait d\u00e9j\u00e0 dans le fichier. C&rsquo;est pour cela que j&rsquo;ai d&rsquo;abord <em>lu<\/em> le fichier, puis clos pour ensuite l&rsquo;ouvrir en mode <em>\u00e9criture<\/em> afin de l&rsquo;\u00e9craser.<\/p><\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Lire un fichier ligne par ligne<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Maintenant que mon fichier contient plusieurs lignes, je vais pouvoir l&rsquo;ouvrir et lire chacune d&rsquo;elles.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt' , 'r', encoding = 'utf8')\ni = 1\nfor ligne in Fichier:\n    print( 'L{} : {}'.format(i,ligne.replace('\\n','')) )\n    i += 1<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai ajout\u00e9 quelques fioritures afin que l&rsquo;affichage soit plus sympathique :<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li>d&rsquo;abord, j&rsquo;ai ajout\u00e9 un compteur (<em>i<\/em>) pour mettre le num\u00e9ro des lignes avant chacune d&rsquo;elles;<\/li><li>ensuite, j&rsquo;ai format\u00e9 l&rsquo;affichage avec la m\u00e9thode <em>format<\/em>;<\/li><li>enfin, j&rsquo;ai supprim\u00e9 les sauts de lignes qu&rsquo;il y avait \u00e0 la fin des lignes avec la m\u00e9thode <em>replace<\/em> car la fonction <em>print<\/em> ins\u00e8re automatiquement des sauts de lignes. <\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;obtiens alors:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">L1 : Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur dictum\nL2 : gravida mauris. Nam arcu libero, nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque habitant morbi\nL3 : tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et\nL4 : lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis,\nL5 : viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis\nL6 : ac, nulla. Cur- abitur auctor semper nulla. Donec varius orci eget risus. Duis nibh mi, congue eu, accumsan eleifend, sagittis\nL7 : quis, diam. Duis eget orci sit amet orci dignissim rutrum. Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel, wisi.\nL8 : Morbi auctor lorem non justo. Nam lacus libero, pretium at, lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed accumsan\nL9 : bibendum, erat ligula aliquet magna, vitae ornare odio metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut\nL10 : massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Aliquam\nL11 : tincidunt urna. Nulla ullamcorper vestibulum turpis. Pellentesque cursus luctus mauris. Nulla malesuada porttitor diam. Donec felis erat, congue non, volutpat\nL12 : at, tincidunt tristique, libero. Vivamus viverra fermentum felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper elit. Proin fermentum massa ac\nL13 : quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Mae- cenas lacinia. Nam ipsum ligula, eleifend at, accumsan\nL14 : nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia nulla vitae enim. Pellentesque tincidunt\nL15 : purus vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec bibendum quam in tellus. Nullam cur- sus pulvinar\nL16 : lectus. Donec et mi. Nam vulputate metus eu enim. Vestibulum pellentesque felis eu massa. Quisque ullamcorper placerat ipsum. Cras nibh.\nL17 : Morbi vel justo vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. In hac habitasse platea dictumst.\nL18 : Integer tempus convallis augue. Etiam facilisis. Nunc elementum fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida sollicitudin, felis odio\nL19 : placerat quam, ac pulvinar elit purus eget enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus quis tortor\nL20 : vitae risus porta vehicula. Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla a fau- cibus semper, leo velit\nL21 : ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis sagittis posuere, turpis lacus congue quam,\nL22 : in hendrerit risus eros eget felis. Maecenas eget erat in sapien mattis porttitor. Vestibulum porttitor. Nulla facilisi. Sed a turpis\nL23 : eu lacus commodo facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus sagittis dui, et vehicula libero dui cursus dui.\nL24 : Mauris tempor ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras nulla. Nulla egestas. Curabitur a leo.\nL25 : Quisque egestas wisi eget nunc. Nam feugiat lacus vel est. Curabitur consectetuer. Suspendisse vel felis. Ut lorem lorem, interdum eu,\nL26 : tincidunt sit amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent enim elit, rutrum at, molestie non, nonummy vel,\nL27 : nisl. Ut lectus eros, malesuada sit amet, fer- mentum eu, sodales cursus, magna. Donec eu purus. Quisque vehicula, urna sed\nL28 : ultricies auctor, pede lorem egestas dui, et convallis elit erat sed nulla. Donec luctus. Curabitur et nunc. Aliquam dolor odio,\nL29 : commodo pretium, ultricies non, pharetra in, velit. Integer arcu est, nonummy in, fermentum faucibus, egestas vel, odio. Sed commodo posuere\nL30 : pede. Mauris ut est. Ut quis purus. Sed ac odio. Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui.\nL31 : Sed accumsan risus eget odio. In hac habitasse platea dictumst. Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.\nL32 : Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat. Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc\nL33 : dui lobortis purus, quis congue purus metus ultricies tellus. Proin et quam. Class aptent taciti sociosqu ad litora torquent per\nL34 : conubia nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum vel, eleifend faucibus, vehicula eu, lacus.<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Afficher une ligne sp\u00e9cifique<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">J&rsquo;ai envie d&rsquo;afficher la deuxi\u00e8me et la derni\u00e8re ligne:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt', 'r', encoding = 'utf8')\ndeuxieme_ligne = Fichier.readlines()[1]\nFichier = open('lipsum.txt', 'r')\nderniere_ligne = Fichier.readlines()[-1]\nprint(deuxieme_ligne + derniere_ligne)\nFichier.close()<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Notez ici que j&rsquo;ai d\u00fb construire deux fois l&rsquo;objet <em>Fichier<\/em>. La m\u00e9thode <em><a href=\"https:\/\/www.w3schools.com\/python\/ref_file_readlines.asp\" target=\"_blank\" rel=\"noreferrer noopener\">readlines()<\/a><\/em> construit une liste de toutes les lignes. Ainsi, pour \u00e9viter de construire deux fois cette liste, le plus intelligent est de faire:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">Fichier = open('lipsum.txt', 'r', encoding = 'utf8')\nlignes = Fichier.readlines()\ndeuxieme_ligne = lignes[1]\nderniere_ligne = lignes[-1]\nprint(deuxieme_ligne + derniere_ligne)\nFichier.close()<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Syntaxe plus courante<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Lorsque l&rsquo;on travaille avec un objet <em>fichier<\/em>, il est d&rsquo;usage d&rsquo;utiliser la syntaxe suivante:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"dracula\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">with open('lipsum.txt', 'a' , encoding = 'utf8') as Fichier:\n    new_line = '\\nC\\'est la derni\u00e8re ligne.'\n    Fichier.write(new_line)<\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Voil\u00e0 ! La manipulation de fichiers en Python n&rsquo;a plus de secret pour vous maintenant !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.mathweb.fr\/euclide\/ressources-python\/\">[Retour aux ressources Python]<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Nous allons parler sur cette page de la manipulation de fichiers en Python, notion au programme de 1\u00e8re NSI. Cr\u00e9ation d&rsquo;un fichier Nous allons cr\u00e9er un fichier nomm\u00e9 lipsum.txt dans lequel nous allons mettre une cha\u00eene de caract\u00e8res. Ce n&rsquo;est pas tr\u00e8s long: Ceci nous servira de base pour les [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-2503","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..<\/title>\n<meta name=\"description\" content=\"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..\" \/>\n<meta property=\"og:description\" content=\"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/\" \/>\n<meta property=\"og:site_name\" content=\"Mathweb.fr\" \/>\n<meta property=\"article:modified_time\" content=\"2023-04-16T14:19:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/\",\"name\":\"Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/manipulation-fichiers-python.jpg\",\"datePublished\":\"2020-06-06T15:33:38+00:00\",\"dateModified\":\"2023-04-16T14:19:27+00:00\",\"description\":\"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/manipulation-fichiers-python.jpg\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2020\\\/06\\\/manipulation-fichiers-python.jpg\",\"width\":1000,\"height\":926},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/manipulation-de-fichiers-en-python\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Manipulation de fichiers en Python\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#website\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/\",\"name\":\"Mathweb.fr\",\"description\":\"Math\u00e9matiques, LaTeX et Python\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/#\\\/schema\\\/person\\\/e4d3bb07968238378f0d5052a70dcd69\",\"name\":\"St\u00e9phane Pasquet\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"url\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"contentUrl\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\",\"width\":74,\"height\":77,\"caption\":\"St\u00e9phane Pasquet\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.mathweb.fr\\\/euclide\\\/wp-content\\\/uploads\\\/2025\\\/06\\\/cropped-logo-mathweb.webp\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..","description":"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/","og_locale":"fr_FR","og_type":"article","og_title":"Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..","og_description":"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.","og_url":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/","og_site_name":"Mathweb.fr","article_modified_time":"2023-04-16T14:19:27+00:00","og_image":[{"url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Dur\u00e9e de lecture estim\u00e9e":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/","url":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/","name":"Manipulation de fichiers en Python - Mathweb.fr - Lecture, \u00e9criture, modifs..","isPartOf":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/#primaryimage"},"image":{"@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/#primaryimage"},"thumbnailUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg","datePublished":"2020-06-06T15:33:38+00:00","dateModified":"2023-04-16T14:19:27+00:00","description":"Voici un cours sur la manipulation de fichiers en Python : lecture, \u00e9critture, modification, tout y est abord\u00e9. Niveau 1\u00e8re NSI.","breadcrumb":{"@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/"]}]},{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/#primaryimage","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2020\/06\/manipulation-fichiers-python.jpg","width":1000,"height":926},{"@type":"BreadcrumbList","@id":"https:\/\/www.mathweb.fr\/euclide\/manipulation-de-fichiers-en-python\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.mathweb.fr\/euclide\/"},{"@type":"ListItem","position":2,"name":"Manipulation de fichiers en Python"}]},{"@type":"WebSite","@id":"https:\/\/www.mathweb.fr\/euclide\/#website","url":"https:\/\/www.mathweb.fr\/euclide\/","name":"Mathweb.fr","description":"Math\u00e9matiques, LaTeX et Python","publisher":{"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.mathweb.fr\/euclide\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":["Person","Organization"],"@id":"https:\/\/www.mathweb.fr\/euclide\/#\/schema\/person\/e4d3bb07968238378f0d5052a70dcd69","name":"St\u00e9phane Pasquet","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","url":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","contentUrl":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp","width":74,"height":77,"caption":"St\u00e9phane Pasquet"},"logo":{"@id":"https:\/\/www.mathweb.fr\/euclide\/wp-content\/uploads\/2025\/06\/cropped-logo-mathweb.webp"}}]}},"_links":{"self":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/pages\/2503","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/comments?post=2503"}],"version-history":[{"count":0,"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/pages\/2503\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.mathweb.fr\/euclide\/wp-json\/wp\/v2\/media?parent=2503"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}