{ "cells": [ { "cell_type": "markdown", "metadata": { "nbsphinx": "hidden" }, "source": [ "[prev: *Numeric tools*](stdlib-numeric-tools.ipynb) | [home](../index.ipynb) | [next: Le module *subprocess*](stdlib-subprocess.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# *File and Directory Access*\n", "\n", "Modules facilitant le travail sur une arborescence" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Module *glob*\n", "Permet de retrouver des fichiers (même syntaxe que sur Linux)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['intro.ipynb',\n", " 'modules-tiers.ipynb',\n", " 'stdlib-data-types.ipynb',\n", " 'stdlib-file-directory.ipynb',\n", " 'stdlib-numeric-tools.ipynb',\n", " 'stdlib-string-services.ipynb',\n", " 'stdlib-subprocess.ipynb',\n", " 'virtual-environments.ipynb']" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import glob\n", "# Retourne tous les dossiers et fichiers du dossier courant\n", "glob.glob('*')" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['stdlib-data-types.ipynb',\n", " 'stdlib-file-directory.ipynb',\n", " 'stdlib-numeric-tools.ipynb',\n", " 'stdlib-string-services.ipynb',\n", " 'stdlib-subprocess.ipynb']" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Retourne uniquement les fichiers concernant les standard libraries\n", "glob.glob('stdlib*.*')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Module *os.path*\n", "\n", "Aide au parcours d'une arborescence" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'D:\\\\Documents\\\\smai\\\\Travail\\\\CODES\\\\formation-python\\\\notebooks\\\\python-modules'" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import os\n", "# Dossier courant\n", "cwd = os.getcwd()\n", "cwd" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "D:\\Documents\\smai\\Travail\\CODES\\formation-python\\notebooks\n", "True\n", "True\n", "D:\\Documents\\smai\\Travail\\CODES\\formation-python\\notebooks\\python-modules\n" ] } ], "source": [ "# Retourne le dossier parent\n", "print(os.path.dirname(cwd))\n", "# Vérifie l'existence de fichiers\n", "print(os.path.isfile(os.path.join(cwd,'intro.ipynb')))\n", "# Gère les chemins relatifs (mais déconseillé)\n", "print(os.path.isfile('intro.ipynb'))\n", "# Transforme des chemins relatifs en chemins absolus\n", "print(os.path.abspath('.'))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Module *shutil*\n", "\n", "Gère la création de fichiers\n", "\n", "``` python\n", "import shutil\n", "# Copie de fichiers\n", "shutil.copy(source,destination)\n", "# Copie d'une arborescence\n", "shutil.copytree(source,destination)\n", "# Suppression d'une arborescence\n", "shutil.rmtree(dossier_maitre)\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Module *pathlib*\n", "\n", "*os.path* + *glob* + *open* dans un seul objet *Path* !" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "from pathlib import Path\n", "cwd = Path()" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[WindowsPath('.ipynb_checkpoints'),\n", " WindowsPath('intro.ipynb'),\n", " WindowsPath('modules-tiers.ipynb'),\n", " WindowsPath('stdlib-data-types.ipynb'),\n", " WindowsPath('stdlib-file-directory.ipynb'),\n", " WindowsPath('stdlib-numeric-tools.ipynb'),\n", " WindowsPath('stdlib-string-services.ipynb'),\n", " WindowsPath('stdlib-subprocess.ipynb'),\n", " WindowsPath('virtual-environments.ipynb')]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(cwd.glob('*'))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[WindowsPath('stdlib-data-types.ipynb'),\n", " WindowsPath('stdlib-file-directory.ipynb'),\n", " WindowsPath('stdlib-numeric-tools.ipynb'),\n", " WindowsPath('stdlib-string-services.ipynb'),\n", " WindowsPath('stdlib-subprocess.ipynb')]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(cwd.glob('stdlib*.*'))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "rep\\file.txt\n", "rep\n" ] } ], "source": [ "print(Path(\"rep/file.txt\"))\n", "print(Path(\"rep/file.txt\").parent)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "intro.ipynb\n" ] }, { "data": { "text/plain": [ "True" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "print(cwd / 'intro.ipynb')\n", "(cwd / 'intro.ipynb').is_file()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "'hello !'" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "myfile = Path('test/toto.txt')\n", "myfile.parent.mkdir(exist_ok=True)\n", "myfile.touch()\n", "myfile.write_text(\"hello !\")\n", "new = myfile.replace('test/titi.txt')\n", "new.read_text()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "## Exercices" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.12" } }, "nbformat": 4, "nbformat_minor": 4 }