Skip to content
GitLab
Projects Groups Topics Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Register
  • Sign in
  • PYTHON - Atelier MatPlotLib PYTHON - Atelier MatPlotLib
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Package Registry
    • Terraform modules
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar

La forge institutionnelle d'INRAE étant en production depuis le 10 juin 2025, nous vous recommandons d'y créer tous vos nouveaux projets.

  • Poulard Christine
  • PYTHON - Atelier MatPlotLibPYTHON - Atelier MatPlotLib
  • Wiki
  • AtelierB2_Lire_un_fichier

AtelierB2_Lire_un_fichier · Changes

Page history
Update AtelierB2_Lire_un_fichier authored Apr 05, 2022 by Poulard Christine's avatar Poulard Christine
Hide whitespace changes
Inline Side-by-side
AtelierB2_Lire_un_fichier.md
View page @ c21176cb
...@@ -90,6 +90,7 @@ class UnObjetPourTester: ...@@ -90,6 +90,7 @@ class UnObjetPourTester:
def __enter__(self): def __enter__(self):
print(f'Création de {self.nom}.') print(f'Création de {self.nom}.')
return self
def __exit__(self, exc_type, exc_value, tb): def __exit__(self, exc_type, exc_value, tb):
print(f'Destruction de {self.nom} ; hop dans la poubelle {self.poubelle}.') print(f'Destruction de {self.nom} ; hop dans la poubelle {self.poubelle}.')
...@@ -101,14 +102,15 @@ papier_gras = UnObjetPourTester("papier gras", "grise") ...@@ -101,14 +102,15 @@ papier_gras = UnObjetPourTester("papier gras", "grise")
del(papier_gras) del(papier_gras)
# dans le cadre d'un context manager # dans le cadre d'un context manager
with UnObjetPourTester("bouteille d'eau", "verte") as bouteille_eau: with UnObjetPourTester("bouteille d'eau", "verte") as bouteille_eau:
del(bouteille_eau) print("on jette l'objet ", bouteille_eau.nom)
``` ```
L'exemple ci-dessus écrit dans la console: L'exemple ci-dessus écrit dans la console:
> tests de la notion de context manager > tests de la notion de context manager
Création de bouteille d'eau. > Création de bouteille d'eau.
Destruction de bouteille d'eau ; hop dans la poubelle verte. > on jette l'objet bouteille d'eau
> Destruction de bouteille d'eau ; hop dans la poubelle verte.
Les actions définies par __enter__ et __exit__ ne sont exécutées que dans le second cas. Les actions définies par __enter__ et __exit__ ne sont exécutées que dans le second cas. On n'a pas besoin de préciser "del(bouteille_eau)", la destruction se fait automatiquement à la fin du bloc introduit par with.
En s'appuyant sur cette notion, on a proposé deux scripts pour gérer la création et la destruction de la fenêtre encadrant l'appel à une méthode de filedialog. En s'appuyant sur cette notion, on a proposé deux scripts pour gérer la création et la destruction de la fenêtre encadrant l'appel à une méthode de filedialog.
Le premier, présenté ici, fait appel à une classe "fantôme", qui ne fait pas grand chose ; le seul intérêt réside dans ses méthodes __enter__ et __exit__ qui vont respectivement créer et détruire une instance de tkinter.Tk. L'appel à tkinter.filedialog.askopenfilename ou à tout autre module de tkinter se fait dans le bloc du with. Le premier, présenté ici, fait appel à une classe "fantôme", qui ne fait pas grand chose ; le seul intérêt réside dans ses méthodes __enter__ et __exit__ qui vont respectivement créer et détruire une instance de tkinter.Tk. L'appel à tkinter.filedialog.askopenfilename ou à tout autre module de tkinter se fait dans le bloc du with.
Le second, plus complet, prend en argument la fonction de tkinter.filedialog et l'exécute dans sa méthode __enter__ . Les méthodes sont exécutées dans cet ordre : __init__, __enter__ puis __exit__ ; pour vous en convaincre il suffit d'ajouter des **print**. Le second, plus complet, prend en argument la fonction de tkinter.filedialog et l'exécute dans sa méthode __enter__ . Les méthodes sont exécutées dans cet ordre : __init__, __enter__ puis __exit__ ; pour vous en convaincre il suffit d'ajouter des **print**.
......
Clone repository
  • AtelierB1_Graphiques_simples
  • AtelierB2_Lire_un_fichier
  • AtelierC
  • Atelier_D_carte
  • Atelier_D_carte_a_partir_de_fichiers_binaires
  • Atelier_E_longues_series
  • Atelier_G_widgets
  • Atelier_clic_afficher
  • Atelier_clics
  • Cartes focus sur le redimensionnement
  • GUI avec QT
  • La doc avec Sphinx
  • Lexique
  • Point Théorie Subplots
  • Pour les contributeurs
View All Pages