En pratique

De TARENTINO
Aller à la navigationAller à la recherche
Array

test


(Opérateurs:Magenta)
(Méthodes:Green)
(Fonctions:Red)

Accueil
Connexion
Déconnexion
Aide
Admin
Ft.png

En pratique

  • Appliquons maintenant la théorie à la pratique.
  • Tout n'est pas encore intégré

Infos utiles

  • Connaitre la version de Python
1 import sys
2 print(sys.version_info)

Index des modules d'extension Python

Exercices

Python Niveau 1 (Dominique)

Sommes de 2 nombres

 1 # PROGRAMME sommeNombres
 2 #VAR
 3 nombre1 : int
 4 nombre2 : int
 5 somme : int
 6 #DEBUT
 7 nombre1 = int(input("Saisir le premier nombre : "))
 8 nombre2 = int(input("Saisir le deuxième nombre : "))
 9 somme = nombre1 + nombre2
10 print("La somme des 2 nombres est : " , somme)
11 #FIN

Ascenceur 01

 1 # Variables
 2 PorteCabineEstOuverte:bool
 3 lesEtagesEstES:[bool]=[true,
 4                        true,
 5                        false,
 6                        true]
 7 #lesEtagesEstES[1]=false
 8 EntrainementEtatDepl:str        # Arreté
 9 EtageCourant:int
10 EtageAppel:int
11 # Debut
12 EntrainementEtatDepl="Arreté"
13 EtageCourant=1
14 #if (EntrainementEtatDepl=="Arreté") :
15 EtageAppel=int(input("De quel étage appelez vous ? "))
16 # si EtageCourant < EtageAppel And EntrainementEtatDepl=Arreté and PorteCabineEstOuverte=false
17 if (EtageAppel > EtageCourant) :
18     # descente
19     print("Faire monter l'entrainement de la cabine !")
20     print("La cabine est en montée et ouverte False à l'étage ", EtageCourant)
21 else :
22     if (EtageAppel < EtageCourant) :
23         # si EtageCourant < EtageAppel And EntrainementEtatDepl=Arreté and PorteCabineEstOuverte=true
24         # Montée
25         print("Faire descendre l'entrainement de la cabine !")
26         print("La cabine est en descente et ouverte False à l'étage ", EtageCourant)
27     else :
28         print("Déjà au bon étage !!!! Faire ouvrir les portes")
29     # fin de si
30 # fin de si
31 print("La cabine est ",EntrainementEtatDepl, " et ouverte à l'étage ", EtageCourant)
32 # Fin

Ascenceur 02

 1 """"
 2 NAME        : ascenseur.py
 3 Description : Programme de pilotage d'un ascenseur - V1
 4 """
 5 # PROGRAMME ascenseur
 6 #
 7 # TYPES
 8 # Nous n'utilisons que des types natifs du langage (int, str ...), il n'est donc pas nécessaire de définir des types de données : ils existent
 9 #
10 # VAR
11 etatEntrainement : str = "ARRETE" 		# Déclaration d'une donnée variable de type string et initialisation
12 										# Un entrainement arrêté
13 porteCabineEstOuverte : bool = False	# Déclaration d'une donnée variable de type booléen et initialisation
14 										# Une porte de cabine ouverte
15 										
16 										
17 etageCourantCabine : int = 1			# Déclaration d'une donnée variable de type entier et initialisation
18 										# Une cabine est à l'étge 1
19 etageDAppel : int  = -1					# Déclaration d'une donnée
20 # variable de type entier et initialisation
21 										# Aucun étage appelé (valeur -1)
22 lesEtagesEstES : [bool]=[True,True,False,True]
23 
24 n : int=0
25 
26 #
27 # DEBUT
28 print("	Debut du programme 3")
29 while n<4 :
30 	print("L'etage " , n , " est " ,lesEtagesEstES[n])
31 	n=n+1
32 print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage", etageCourantCabine)
33 
34 # L'usager appelle l'ascenseur
35 etageDAppel = int(input("De quel étage appelez-vous? "))
36 if (lesEtagesEstES[etageDAppel]==True) :
37 
38 	if (etageDAppel > etageCourantCabine) :
39 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
40 		etatEntrainement = "EN_MONTEE"
41 	else :
42 		if (etageDAppel < etageCourantCabine) :
43 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
44 			etatEntrainement = "EN_DESCENTE"
45 		else :
46 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir la porte
47 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
48 			porteCabineEstOuverte = True
49 	print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage", etageCourantCabine)
50 
51 	# Saisie de l'étage auquel arrive la cabine
52 	if ( etageCourantCabine != etageDAppel) :
53 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
54 		if (etageCourantCabine == etageDAppel) :
55 			print("FAIRE ARRETER L'ENTRAINEMENT")
56 			etatEntrainement = "ARRETE"
57 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
58 			porteCabineEstOuverte = True
59 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
60 				  etageCourantCabine)
61 
62 	# Saisie de l'étage auquel arrive la cabine
63 	if ( etageCourantCabine != etageDAppel) :
64 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
65 		if (etageCourantCabine == etageDAppel) :
66 			print("FAIRE ARRETER L'ENTRAINEMENT")
67 			etatEntrainement = "ARRETE"
68 			print ("FAIRE OUVRIR LA PORTE DE LA CABINE")
69 			porteCabineEstOuverte = True
70 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
71 				  etageCourantCabine)
72 
73 	# Saisie de l'étage auquel arrive la cabine
74 	if ( etageCourantCabine != etageDAppel) :
75 		etageCourantCabine = int(input("La cabine arrive à quel étage? "))
76 		if (etageCourantCabine == etageDAppel) :
77 			print("FAIRE ARRETER L'ENTRAINEMENT")
78 			etatEntrainement = "ARRETE"
79 			print("FAIRE OUVRIR LA PORTE DE LA CABINE")
80 			porteCabineEstOuverte = True
81 			print("	La cabine est", etatEntrainement, "et ouverte", porteCabineEstOuverte, "à l'étage",
82 				  etageCourantCabine)
83 else :
84 	print("etage FERME")
85 print("	Fin du programme")
86 #
87 # FIN

Ascenceur 03

  1 """"
  2 NAME        : ascenseur.py
  3 Description : Programme de pilotage d'un ascenseur - V2 - Tableaux, structures, boucles
  4 """
  5 #
  6 # PROGRAMME ascenseur
  7 # TYPES
  8 from enum import Enum # Truc syntaxique que l'on ne comprend pas encore
  9 class EnumEtatEnt (Enum) :  # Définition d'un type énumération
 10 	ARRETE = 1
 11 	EN_MONTEE = 2
 12 	EN_DESCENTE = 3
 13 
 14 class EnumEtatPorte (Enum) :
 15 	FERME = 1
 16 	OUVERT = 2
 17 
 18 class EtatCabine (Enum) :
 19 	ARRETE_FERME = 1
 20 	ARRETE_OUVERT = 2
 21 	EN_DESCENTE_FERME = 3
 22 	EN_MONTEE_FERME = 4
 23 
 24 #Constante NB_ETAGES = 4 - Le nombre d'étages de l'ascenseur est 4, RDC, étage 0, inclus - Il y a donc 3 étages proprement dits
 25 #Constante NUM_PORTE_CABINE = 4 - Le numéro de la porte de cabine est 4 (les premiers numéros correspondent à des portes d'étage)
 26 
 27 from dataclasses import dataclass # Truc syntaxique que l'on ne comprend pas encore
 28 @dataclass                        # Autre truc syntaxique ...
 29 class Cabine :                    # Définition d'un type structure Cabine
 30 	etat : EtatCabine
 31 	etageCourant : int
 32 	numPorte: int
 33 
 34 @dataclass
 35 class Etage :                      # Définition d'un type structure Etage
 36 	estES : bool
 37 	estEteint : bool
 38 	numPorte : int
 39 #
 40 # VAR
 41 
 42 def init() :
 43 	print("   L'entrainement est", etatEntrainement)
 44 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 45 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 46 
 47 etatEntrainement : EnumEtatEnt = EnumEtatEnt.ARRETE 	# Déclaration d'une donnée variable de type énumération et initialisation -
 48 																# 1 entrainement, arrêté
 49 lesEtatPortes : [EnumEtatPorte] = [EnumEtatPorte.FERME, EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME] 	# Déclaration d'une donnée variable de type tableau d'énumération et initialisation
 50 																												# 5 portes fermées - 4 portes d'étage et 1 porte de cabine (la dernière)
 51 laCabine : Cabine = Cabine(EtatCabine.ARRETE_FERME, 1, 4)           	# Déclation d'une donnée variable de type structure et initialisation
 52 															# 1 cabine, arrêté fermée, à l'étage 1 et avec la porte 4
 53 lesEtages : [Etage] = [Etage(True,True,0), Etage(True,True,1), Etage(False,True,2), Etage(True,True,3)]  # Déclaration d'une donnée variable de type tableau de 4 booléens et initialisation
 54 																									   # 4 étages, chaque étage, en service, éteint, avec une porte de son numéro
 55 etageDAppel : int  = -1 	# Déclaration d'une donnée variable de type entier et initialisation
 56 							# Aucun étage appelé (valeur -1)
 57 #
 58 # DEBUT
 59 print("   Début du programme 9")
 60 
 61 # Affichage état de l'ascenseur
 62 # Affichage état complet de la cabine
 63 print("   L'entrainement est", etatEntrainement)
 64 print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 65 print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 66 
 67 #Affichage état complet des étages
 68 """""
 69 numEtage = 0
 70 while numEtage < 4  :# NB_ETAGES
 71 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 72 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 73 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 74 	numEtage = numEtage + 1
 75 """	
 76 for numEtage in range(0,4) :
 77 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 78 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 79 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 80 # L'usager appelle l'ascenseur
 81 etageDAppel = int(input("De quel étage appelez-vous? "))
 82 if lesEtages[etageDAppel].estES :
 83 	if (etageDAppel > laCabine.etageCourant) :
 84 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
 85 		etatEntrainement = EnumEtatEnt.EN_MONTEE
 86 		laCabine.etat = EtatCabine.EN_MONTEE_FERME
 87 	else :
 88 		if (etageDAppel < laCabine.etageCourant) :
 89 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
 90 			etatEntrainement = EnumEtatEnt.EN_DESCENTE
 91 			laCabine.etat = EtatCabine.EN_DESCENTE_FERME
 92 		else :
 93 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir les portes
 94 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
 95 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
 96 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
 97 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
 98 			laCabine.etat = EtatCabine.ARRETE_OUVERT
 99 	# Affichage état complet de la cabine
100 	print("   L'entrainement est", etatEntrainement)
101 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
102 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
103 	while ( laCabine.etageCourant != etageDAppel) : 	# La cabine n'est pas à l'étage d'appel
104 		# Saisie de l'étage auquel arrive la cabine
105 		laCabine.etageCourant = int(input("La cabine arrive à quel étage? "))
106 		if (laCabine.etageCourant == etageDAppel) :
107 			print("FAIRE ARRETER L'ENTRAINEMENT")
108 			etatEntrainement = EnumEtatEnt.ARRETE
109 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
110 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
111 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
112 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
113 			laCabine.etat = EtatCabine.ARRETE_OUVERT
114 		# Affichage état complet de la cabine
115 		print("   L'entrainement est", etatEntrainement)
116 		print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
117 		print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
118 else :
119 	print("   L'appel ne peut être pris en compte car l'étage n'est pas en service")
120 
121 print("   Fin du programme")
122 #
123 # FIN

Ascenceur 04

  1 """"
  2 NAME        : ascenseur.py
  3 Description : Programme "ascenseur", programme de pilotage d'un ascenseur - V3 - Sous-programmes
  4 """
  5 # PROGRAMME ascenseur
  6 #
  7 # TYPES
  8 from enum import Enum # Truc syntaxique que l'on ne comprend pas encore
  9 class EnumEtatEnt (Enum) :  # Définition d'un type énumération
 10 	ARRETE = 1
 11 	EN_MONTEE = 2
 12 	EN_DESCENTE = 3
 13 
 14 class EnumEtatPorte (Enum) :
 15 	FERME = 1
 16 	OUVERT = 2
 17 
 18 class EtatCabine (Enum) :
 19 	ARRETE_FERME = 1
 20 	ARRETE_OUVERT = 2
 21 	EN_DESCENTE_FERME = 3
 22 	EN_MONTEE_FERME = 4
 23 
 24 #Constante NB_ETAGES = 4 - Le nombre d'étages de l'ascenseur est 4, RDC, étage 0, inclus - Il y a donc 3 étages proprement dits
 25 #Constante NUM_PORTE_CABINE = 4 - Le numéro de la porte de cabine est 4 (les premiers numéros correspondent à des portes d'étage)
 26 
 27 from dataclasses import dataclass # Truc syntaxique que l'on ne comprend pas encore
 28 @dataclass                        # Autre truc syntaxique ...
 29 class Cabine :                    # Définition d'un type structure Cabine
 30 	etat : EtatCabine
 31 	etageCourant : int
 32 	numPorte: int
 33 
 34 @dataclass
 35 class Etage :                      # Définition d'un type structure Etage
 36 	estES : bool
 37 	estEteint : bool
 38 	numPorte : int
 39 #
 40 # VAR
 41 etatEntrainement : EnumEtatEnt = EnumEtatEnt.ARRETE 	# Déclaration d'une donnée variable de type énumération et initialisation -
 42 																# 1 entrainement, arrêté
 43 lesEtatPortes : [EnumEtatPorte] = [EnumEtatPorte.FERME, EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME,EnumEtatPorte.FERME] 	# Déclaration d'une donnée variable de type tableau d'énumération et initialisation
 44 																												# 5 portes fermées - 4 portes d'étage et 1 porte de cabine (la dernière)
 45 laCabine : Cabine = Cabine(EtatCabine.ARRETE_FERME, 1, 4)           	# Déclation d'une donnée variable de type structure et initialisation
 46 															# 1 cabine, arrêté fermée, à l'étage 1 et avec la porte 4
 47 lesEtages : [Etage] = [Etage(True,True,0), Etage(True,True,1), Etage(False,True,2), Etage(True,True,3)]  # Déclaration d'une donnée variable de type tableau de 4 booléens et initialisation
 48 																									   # 4 étages, chaque étage, en service, éteint, avec une porte de son numéro
 49 etageDAppel : int  = -1 	# Déclaration d'une donnée variable de type entier et initialisation
 50 							# Aucun étage appelé (valeur -1)
 51 #
 52 # SOUS-PROGRAMME afficherEtatCompletCabine
 53 def afficherEtatCompletCabine() :
 54 	# DEBUT
 55 	print("   L'entrainement est", etatEntrainement)
 56 	print("   La porte de la cabine est dans l'état ", lesEtatPortes[laCabine.numPorte])
 57 	print("   La cabine est", laCabine.etat, "à l'étage ", laCabine.etageCourant)
 58 	# FIN
 59 # FIN SOUS-PROGRAMME
 60 #
 61 # SOUS-PROGRAMME calculerEtatCabine - retourne une valeur de type EtatCabine
 62 def calculerEtatCabine() :
 63 	# VAR LOC
 64 	result : EtatCabine
 65 	# DEBUT
 66 	if (etatEntrainement == EnumEtatEnt.ARRETE ) :
 67 		if (lesEtatPortes[laCabine.numPorte] == EnumEtatPorte.FERME) :
 68 			result = EtatCabine.ARRETE_FERME
 69 		else :
 70 			result = EtatCabine.ARRETE_OUVERT
 71 	elif (etatEntrainement == EnumEtatEnt.EN_DESCENTE ) :
 72 		result = EtatCabine.EN_DESCENTE_FERME
 73 	else :
 74 		result = EtatCabine.EN_MONTEE_FERME
 75 	return result
 76 	# FIN
 77 # FIN SOUS-PROGRAMME
 78 
 79 # DEBUT
 80 print("   Début du programme 10")
 81 # Affichage état de l'ascenseur
 82 # Affichage état complet de la cabine
 83 afficherEtatCompletCabine()
 84 #Affichage état complet des étages
 85 for numEtage in range(0,4) :
 86 	print("   L'étage ", numEtage, "est es ", lesEtages[numEtage].estES, ", éteint ", lesEtages[numEtage].estEteint,
 87 		  "numéro de porte ", lesEtages[numEtage].numPorte,
 88 		  "dans l'état ", lesEtatPortes[lesEtages[numEtage].numPorte])
 89 # L'usager appelle l'ascenseur
 90 etageDAppel = int(input('De quel étage appelez-vous? '))
 91 if lesEtages[etageDAppel].estES :
 92 	if (etageDAppel > laCabine.etageCourant) :
 93 		print("FAIRE MONTER L'ENTRAINEMENT DE LA CABINE")
 94 		etatEntrainement = EnumEtatEnt.EN_MONTEE
 95 		laCabine.etat = calculerEtatCabine()
 96 	else :
 97 		if (etageDAppel < laCabine.etageCourant) :
 98 			print("FAIRE DESCENDRE L'ENTRAINEMENT DE LA CABINE")
 99 			etatEntrainement = EnumEtatEnt.EN_DESCENTE
100 			laCabine.etat = calculerEtatCabine()
101 		else :
102 			#La cabine se tient déjà à l'étage demandé : il faut juste ouvrir les portes
103 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
104 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
105 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
106 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
107 			laCabine.etat = calculerEtatCabine()
108 	# Affichage état complet de la cabine
109 	afficherEtatCompletCabine()
110 	while ( laCabine.etageCourant != etageDAppel) : 	# La cabine n'est pas à l'étage d'appel
111 		# Saisie de l'étage auquel arrive la cabine
112 		laCabine.etageCourant = int(input('La cabine arrive à quel étage? '))
113 		if (laCabine.etageCourant == etageDAppel) :
114 			print("FAIRE ARRETER L'ENTRAINEMENT")
115 			etatEntrainement = EnumEtatEnt.ARRETE
116 			print("FAIRE OUVRIR LA PORTE NUMERO : ", laCabine.numPorte)
117 			lesEtatPortes[laCabine.numPorte] = EnumEtatPorte.OUVERT
118 			print("FAIRE OUVRIR LA PORTE NUMERO : ", lesEtages[etageDAppel].numPorte)
119 			lesEtatPortes[lesEtages[etageDAppel].numPorte] = EnumEtatPorte.OUVERT
120 			laCabine.etat = calculerEtatCabine()
121 		# Affichage état complet de la cabine
122 		afficherEtatCompletCabine()
123 else :
124 	print("	l'appel ne peut être pris en compte car l'étage n'est pas en service")
125 
126 print("   Fin du programme")
127 #
128 # FIN


Python Niveau 2 (Alex)

Exercice Hello Word

  • Sans commentaire, si tu n'y arrives pas alors laisses tomber Python....
1 #!/usr/bin/env python3
2 print("Hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
  • Analyse:
    • Non trop facile !

Exercice Hello Word compatible Python 2 et Python 3

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 from __future__ import print_function
4 print("hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
  • Analyse:
    • Il existe plusieurs versions de Python, je ne parlerai ici que de la version 2 et 3 car elles ont de principales différences.
Print
  • Le changement le plus radical étant surement de transformer le print en fonction.
Python 2: print "bonjour"
Python 3: print("bonjour")
  • Mais aussi:
Python 2                            Python 3   
print "Bonjour"                 →   print("Bonjour")
print "Bonjour", variable1      →   print("Bonjour", variable1)
print "\n".join([x, y])         →   print(x, y, sep="\n")
print >> sys.stderr, "erreur"   →   print("Erreur", file=sys.stderr)
print "une ligne ",             →   print("une ligne", end="")
Exceptions
Python 2                          Python 3
raise IOError, "file error"   →   raise IOError("file error")
raise "Erreur 404"            →   raise Exception("Erreur 404!")
raise TypeError, msg, tb      →   raise TypeError.with_traceback(tb)
Changement de nom de modules
Python 2             Python 3
_builtin__       →   builtins
ConfigParser     →   configparser
copy_reg         →   copyreg
cPickle          →   pickle
Queue            →   queue
repr             →   reprlib
SocketServer     →   socketserver
Tkinter          →   tkinter
_winreg          →   winreg
thread           →   _thread
dummy_thread     →   _dummy_thread
markupbase       →   _markupbase
Réorganisation
Python 2                        Python 3
xrange()                    →   range()
reduce()                    →   functools.reduce()
intern()                    →   sys.intern()
unichr()                    →   chr()
basestring()	            →   str()
long()	                    →   int()
itertools.izip()            →   zip()
itertools.imap()            →   map()
itertools.ifilter()         →   filter()
itertools.ifilterfalse()    →   itertools.filterfalse()
cookielib                   →   http.cookiejar
Cookie	                    →   http.cookies
htmlentitydefs              →   html.entities
HTMLParser                  →   html.parser
httplib                     →   http.client
Dialog                      →   tkinter.dialog
FileDialog                  →   tkinter.FileDialog
ScrolledText                →   tkinter.scolledtext
SimpleDialog                →   tkinter.simpledialog
Tix                         →   tkinter.tix
Tkconstants                 →   tkinter.constants
Tkdnd                       →   tkinter.dnd
tkColorChooser              →   tkinter.colorchooser
tkCommonDialog              →   tkinter.commondialog
tkFileDialog                →   tkinter.filedialog
tkFont                      →   tkinter.font
tkMessageBox                →   tkinter.messagebox
tkSimpleDialog              →   tkinter.simpledialog
robotparser                 →   urllib.robotparser
urlparse                    →   urllib.parse
cStringIO.StringIO()        →   io.StringIO
UserString                  →   collections.UserString
UserList                    →   collections.UserList

Nombres

 1 #!/usr/bin/env python3
 2 # -*- coding: utf-8 -*-
 3 nb_entier = 42
 4 print(type(nb_entier))
 5 nb_long = 300000000000
 6 print(type(nb_long))
 7 nb_complexe = 2+4j
 8 print(type(nb_complexe))
 9 # Changement dynamique de type
10 for nb in range(20):
11     nb2 = nb ** nb
12     print(nb2, type(nb2))
13 # Modulo
14 print("9 % 5 =", 9 % 5)
15 # Puissance
16 print("2 ** 4 =", 2 ** 4)
17 print('=' * 20)
18 # Constructeurs
19 nb = int("42")
20 print(nb, type(nb))
21 nb = float("42.123")
22 print(nb, type(nb))
23 nb = complex("2+5j")
24 print(nb, type(nb))
25 print('=' * 20)
26 print(hex(456))
27 print(oct(456))
28 print(bin(456))
29 print('=' * 20)
30 print(chr(65))
31 print(ord('A'))
  • Analyse:

Chaine

  1 #!/usr/bin/env python3
  2 # -*- coding: utf-8 -*-
  3 ch = "Une chaine double quote peut contenir des ' "
  4 ch2 = 'Une chaine simple quote peut contenir des " '
  5 ch3 = """Une chaine
  6 qui s'etend
  7 sur
  8 plusieurs lignes"""
  9 ch4 = "on peut mettre antislash pour afficher une \" dans une chaine double quote"
 10 print(ch, type(ch))
 11 print(ch2, type(ch2))
 12 print(ch3, type(ch3))
 13 print(ch4, type(ch4))
 14 print('=' * 20)
 15 # Unicode
 16 ch_sans_unicode = "été"
 17 ch_avec_unicode = "été"
 18 print(ch_sans_unicode, type(ch_sans_unicode))
 19 print(ch_avec_unicode, type(ch_avec_unicode))
 20 print("Taille de la chaine ch_sans_unicode:", len(ch_sans_unicode))
 21 print("Taille de la chaine ch_avec_unicode:", len(ch_avec_unicode))
 22 print('=' * 20)
 23 # Chaine raw
 24 ch_sans_raw = 'une chaine\tavec\ndes caractères spéciaux'
 25 ch_avec_raw = r'une chaine\tavec\ndes caractères spéciaux'
 26 print(ch_sans_raw, type(ch_sans_raw))
 27 print(ch_avec_raw, type(ch_avec_raw))
 28 print('=' * 20)
 29 ch = "bonjour tout le monde"
 30 print("ch:", ch)
 31 # Indicage
 32 print("ch[2]:", ch[2])
 33 print("ch[-2]:", ch[-2])
 34 # Tranches de valeurs
 35 print("ch[3:5]:", ch[3:5])
 36 print("ch[-8:-2]:", ch[-8:-2])
 37 print("ch[3:-2]:", ch[3:-2])
 38 print("ch[3:]:", ch[3:])
 39 print("ch[:-2]:", ch[:-2])
 40 # Multiplication d'une chaine par un entier
 41 ch2 = 'hello' * 4
 42 print(ch2)
 43 # On peut itérer sur une séquence
 44 for car in ch:
 45     print(car)
 46 # Concaténation
 47 ch3 = ch + ch2
 48 print(ch3)
 49 # Appartenance
 50 print("'xyz' in 'bonjour' ?", 'xyz' in 'bonjour')
 51 print("'njo' in 'bonjour' ?", 'njo' in 'bonjour')
 52 print('=' * 20)
 53 # Masque d'affichage
 54 notes = "Eleve: %-10s    Age: %2d   Note: %5.2f"
 55 print("Masque:", notes)
 56 print("Note Bart:", notes % ('Bart', 10, 5.55))
 57 # Masque d'affectation
 58 note_lisa = notes % ('Lisa', 12, 18.42)
 59 print("note_lisa:", note_lisa)
 60 print('=' * 20)
 61 liste = [   ('Bart', 10, 1.23),
 62             ('Lisa', 12, 19.99),
 63             ('Homer', 42, 0.1)
 64         ]
 65 for prenom, age, note in liste:
 66     print(notes % (prenom, age, note))
 67 print('=' * 20)
 68 for var in liste:
 69     print(var, type(var))
 70     #print(notes % (var[0], var[1], var[2]))
 71     print(notes % var)
 72 # Test d'égalité : ==
 73 ch = 'hello'
 74 ch2 = 'hello'
 75 print("ch == ch2 ?", ch == ch2)
 76 # S'agit-il du même objet en mémoire : is
 77 print("ch is ch2 ?", ch is ch2)
 78 print('=' * 20)
 79 # La classe chaine de caractères fournit un ensemble de méthodes
 80 print("ch.upper():", ch.upper())
 81 print("ch.center(40):", ch.center(40,'*'))
 82 print('=' * 20)
 83 # split
 84 ch = "bonjour    tout  le          monde"
 85 print("ch.split()", ch.split())
 86 print("ch.split(' ')", ch.split(' '))
 87 print("ch.split('o')", ch.split('o'))
 88 print('=' * 20)
 89 # replace
 90 ch2 = ch.replace('o', 'X')
 91 print("ch2:", ch2)
 92 print("ch (non modifiée):", ch)
 93 ch2 = ch.replace('jour', 'soir')
 94 print("ch2:", ch2)
 95 print('=' * 20)
 96 # find
 97 print("'ou' apparait a la position:", ch.find('ou'))
 98 print('=' * 20)
 99 # format
100 print("info: {0} {1} {2} {1} {0}".format('a', 'b', 'c'))
101 print('=' * 20)
102 # Espace de noms du programme principal
103 print(dir())
104 print('=' * 20)
105 # Attributs et méthodes d'une classe d'objet, ex. une chaine
106 print(dir(''))
107 print('=' * 20)
108 # Les chaines documentaires
109 def fct():
110     "Ceci est la documentation de ma fonction"
111     pass
112 print("Doc de la fonction fct():", fct.__doc__)
113 print('=' * 20)
114 print("Documentation de la classe str():", str.__doc__)
115 print('=' * 20)
116 print("Documentation de la méthode split de la classe str():", str.split.__doc__)
117 print('=' * 20)
118 print("Documentation de la méthode find de la classe str():", str.find.__doc__)


Python Niveau 3 (Jean François)

Loto

  • Écrire un programme qui réalise un tirage de Loto. Ce dernier est composé de:
    • 5 boules parmi 49 boules numérotées de 1 à 49
    • 1 boule “chance” parmi 10 boules numérotées de 1 à 10
 1 # loto_01.py
 2 import random
 3 nb_boules=49
 4 boules = [ x for x in range(1,nb_boules+1) ]
 5 tirage = []
 6 for boule in range(5):
 7     une_boule = boules[ random.randint(1,len( boules )) - 1 ]
 8     tirage.append( une_boule )
 9     boules.remove(une_boule)
10 chance = random.randint(1,10)
11 print(tirage, chance)
12 tirage.sort()
13 print(tirage)
  • Reprendre le programme de Loto précédent.
    • Utiliser une Classe “Loto” avec un constructeur qui génère un tirage.
Un tirage est composé de :
- Un numéro de tirage
- Les 5 boules
- Le numéro Chance
    • Ajouter une variable de classe qui mémorise les tirages ainsi qu’une méthode qui renvoie un tirage en fonction du numéro du tirage.
    • Créer une référence au dernier tirage appelé “dernierTirage” (ce n’est donc pas une instanciation)
    • Ajouter de la documentation et afficher celle-ci dans la console (introspection)
    • Ajouter un morceau de code qui peut générer une exception:
  • On demande un numéro de tirage et on affiche le tirage correspondant.
 1 # loto_02.py
 2 # v2: on utilise une Classe
 3 """ Un module pour gerer des tirages de Loto """
 4 import random
 5 
 6 class Loto:
 7     """ Permet d'instancier des tirages de Loto """
 8     nb_boules=49
 9     les_tirages = []
10 
11     def __init__(self, num_tirage):
12         """ Cree un tirage [num, les 5 boules, numero change]) """
13         tirage_5_boules = []
14         boules = [ x for x in range(1,Loto.nb_boules+1) ]
15         for boule in range(5):
16             une_boule = boules[ random.randint(1,len( boules )) - 1 ]
17             tirage_5_boules.append( une_boule )
18             boules.remove(une_boule)
19 
20         chance = random.randint(1,10)
21         tirage_5_boules .sort()
22         self.num = num_tirage
23         self.cinqBoules = tirage_5_boules
24         self.chance = chance
25         Loto.les_tirages.append( self )
26 
27     def __str__(self):
28         """ conversion d'un tirage en chaine """
29         ch = "Numero: " + str(self.num) + " ,5 boules: "
30         for i in range(5): ch += str( self.cinqBoules[i] ) + " - "
31         ch += " ,Numero chance: "+ str(self.chance)
32         return ch
33 
34     @classmethod
35     def getUnTirage(cls, num ):
36         """ Exemple de methode de classe """
37         for t in cls.les_tirages:
38             if t.num == num: return t
39     return None
40 
41     if __name__ == "__main__":
42         num = 100
43         for i in range(5):
44             un_tirage = Loto(num+i)
45         le_dernier_tirage = un_tirage
46         for t in Loto.les_tirages:
47             print( t.num, t.cinqBoules, t.chance)
48 
49         print("Dernier: %s\n" % (str(le_dernier_tirage) ))
50         try:
51             num = int( input("Numero de tirage ? ") )
52         except:
53             print("ERREUR: saisie incorrect")
54         else:
55             print("Tirage 103: %s\n" % (str( Loto.getUnTirage( num ) ) ) )

Probabilité course lièvre/tortue

  • Main
1 import lievre.py
2 nb_coup:int=1000000
3 i:int=0
4 while i < nb_coup:
5     lievre.py
6     i=i+1
  • lievre2.py
 1 ###### lievre2.py: le lievre et la tortue
 2 from random import *
 3 total= 0
 4 unGagnant = False
 5 gagnant = None
 6 while not unGagnant:
 7     de = randint(1,6)
 8     print ("Valeur du lance: ", de )
 9     total = total + de
10     if de == 6 :
11         gagnant = "Lievre"
12         unGagnant = True
13     elif total >= 6:
14         gagnant = "Tortue"
15         unGagnant = True
16 print ("Gagnant: ", gagnant )
  • Tortue.py
 1 from random import *
 2 lievre:int=0
 3 i:int=1000000
 4 dep=i
 5 r:int=0
 6 def golievre():
 7     total= 0
 8     while True:
 9         de = randint(1,6)
10         if de == 6 :
11             r=1
12             break
13         total = total + de
14         if total >= 6:
15             r=0
16             break
17     return r
18 # START
19 while i > 0:
20     retour=golievre()
21     #print(retour)
22     if retour==1:
23         lievre+=1
24     i-=1
25 lievre_gagne=lievre
26 tortue_gagne=dep-lievre
27 pourcent=100*lievre_gagne/(tortue_gagne+lievre_gagne)
28 print(lievre, 'sur 1000000', pourcent)
  • Analyse:

Premiers programmes

Quizz

Création d'un programme Quizz
  • Méthode split
  • Modules
  • Standard library
  • Module.fonction
  • Alias Fonction
  • Bonnes habitudes
  • from "module" import ....
  • module random, fonction choice
  • module string, fonction maketrans

Graphismes

TK1

 1 # -*- coding: utf-8 -*-
 2 # script bonjour.py
 3 from tkinter import *
 4 # Création de la fenêtre principale (main window)
 5 Mafenetre = Tk()
 6 # Création d'un widget Label (texte 'Bonjour tout le monde !')
 7 Label1 = Label(Mafenetre, text = 'Bonjour tout le monde !', fg = 'red')
 8 # Positionnement du widget avec la méthode pack()
 9 Label1.pack()
10 # Création d'un widget Button (bouton Quitter)
11 Bouton1 = Button(Mafenetre, text = 'Quitter', command = Mafenetre.destroy)
12 Bouton1.pack()
13 # Lancement du gestionnaire d'événements
14 Mafenetre.mainloop()
Tk01.jpg




TK2

 1 # script de.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 import random
 5 def NouveauLance():
 6     nb = random.randint(1,6)
 7     Texte.set('Résultat -> ' + str(nb))
 8 # Création de la fenêtre principale (main window)
 9 Mafenetre = Tk()
10 Mafenetre.title('Dé à 6 faces')
11 Mafenetre.geometry('300x100+400+400')
12 # Création d'un widget Button (bouton Lancer)
13 BoutonLancer = Button(Mafenetre, text ='Lancer', command = NouveauLance)
14 # Positionnement du widget avec la méthode pack()
15 BoutonLancer.pack(side = LEFT, padx = 5, pady = 5)
16 # Création d'un widget Button (bouton Quitter)
17 BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
18 BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
19 Texte = StringVar()
20 NouveauLance()
21 # Création d'un widget Label (texte 'Résultat -> x')
22 LabelResultat = Label(Mafenetre, textvariable = Texte, fg ='red', bg ='white')
23 LabelResultat.pack(side = LEFT, padx = 5, pady = 5)
24 Mafenetre.mainloop()
Tk02.jpg






TK3

 1 # script frames.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 # Création de la fenêtre principale
 5 Mafenetre = Tk()
 6 Mafenetre.title('Frame widget')
 7 Mafenetre['bg']='bisque' # couleur de fond
 8 # création d'un widget Frame dans la fenêtre principale
 9 Frame1 = Frame(Mafenetre,borderwidth=2,relief=GROOVE)
10 Frame1.pack(side=LEFT,padx=10,pady=10)
11 # création d'un second widget Frame dans la fenêtre principale
12 Frame2 = Frame(Mafenetre,borderwidth=2,relief=GROOVE)
13 Frame2.pack(side=LEFT,padx=10,pady=10)
14 # création d'un widget Frame... dans un widget Frame
15 # le widget Frame1 est le parent du widget Frame3
16 # le parent du widget Frame1 est le widget Mafenetre (fenêtre principale)
17 Frame3 = Frame(Frame1,bg="white",borderwidth=2,relief=GROOVE)
18 Frame3.pack(side=LEFT,padx=10,pady=10)
19 # création d'un widget Label et d'un widget Button dans un widget Frame
20 Label(Frame1,text="RDV dentiste samedi à 15h").pack(padx=10,pady=10)
21 Button(Frame1,text="Effacer",fg='navy',command=Frame1.destroy).pack(padx=10,pady=10)
22 Label(Frame2,text="Réviser le contrôle d'info").pack(padx=10,pady=10)
23 Button(Frame2,text="Effacer",fg='navy',command=Frame2.destroy).pack(padx=10,pady=10)
24 Label(Frame3,text="RDV dentiste à 10h",bg="white").pack(padx=10,pady=10)
25 Button(Frame3,text="Effacer",fg='navy',command=Frame3.destroy).pack(padx=10,pady=10)
26 Mafenetre.mainloop()
Tk03.jpg








TK4

 1 # script mot_de_passe.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 from tkinter.messagebox import * # boîte de dialogue
 5 def Verification():
 6     if Motdepasse.get() == 'python27':
 7         # le mot de passe est bon : on affiche une boîte de dialogue puis on ferme la fenêtre
 8         showinfo('Résultat','Mot de passe correct.\nAu revoir !')
 9         Mafenetre.destroy()
10     else:
11         # le mot de passe est incorrect : on affiche une boîte de dialogue
12         showwarning('Résultat','Mot de passe incorrect.\nVeuillez recommencer !')
13         Motdepasse.set('')
14 # Création de la fenêtre principale (main window)
15 Mafenetre = Tk()
16 Mafenetre.title('Identification requise')
17 # Création d'un widget Label (texte 'Mot de passe')
18 Label1 = Label(Mafenetre, text = 'Mot de passe ')
19 Label1.pack(side = LEFT, padx = 5, pady = 5)
20 # Création d'un widget Entry (champ de saisie)
21 Motdepasse= StringVar()
22 Champ = Entry(Mafenetre, textvariable= Motdepasse, show='*', bg ='bisque', fg='maroon')
23 Champ.focus_set()
24 Champ.pack(side = LEFT, padx = 5, pady = 5)
25 # Création d'un widget Button (bouton Valider)
26 Bouton = Button(Mafenetre, text ='Valider', command = Verification)
27 Bouton.pack(side = LEFT, padx = 5, pady = 5)
28 Mafenetre.mainloop()
Tk04.jpg












TK5

 1 # script spinbox.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 def carre():
 5     """ Calcul du carré """
 6     Resultat.set("Carré = "+str(float(Valeur.get())**2))
 7 # Création de la fenêtre principale (main window)
 8 Mafenetre = Tk()
 9 Mafenetre.title("Spinbox widget")
10 Valeur = StringVar()
11 Valeur.set(2.0)
12 # Création d'un widget Spinbox
13 boite = Spinbox(Mafenetre,from_=0,to=10,increment=0.5,textvariable=Valeur,width=5,command=carre)
14 boite.pack(padx=30,pady=10)
15 # Création d'un widget Label
16 Resultat = StringVar()
17 carre()
18 Label(Mafenetre,textvariable=Resultat).pack(padx=30,pady=10)
19 Mafenetre.mainloop()
Tk05.jpg








TK6

 1 # script scale.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 def maj(nouvelleValeur):
 5     # nouvelle valeur en argument
 6     print(nouvelleValeur)
 7 def plus():
 8     Valeur.set(str(int(Valeur.get())+10))
 9     print(Valeur.get())
10 def moins():
11     Valeur.set(str(int(Valeur.get())-10))
12     print(Valeur.get())
13 # Création de la fenêtre principale (main window)
14 Mafenetre = Tk()
15 Mafenetre.title("Scale widget")
16 Valeur = StringVar()
17 Valeur.set(50)
18 # Création d'un widget Scale
19 echelle = Scale(Mafenetre,from_=-100,to=100,resolution=10,orient=HORIZONTAL,length=300,width=20,label="Offset",tickinterval=20,variable=Valeur,command=maj)
20 echelle.pack(padx=10,pady=10)
21 # Création d'un widget Button (bouton +)
22 Button(Mafenetre,text="+",command=plus).pack(padx=10,pady=10)
23 # Création d'un widget Button (bouton -)
24 Button(Mafenetre,text="-",command=moins).pack(padx=10,pady=10)
25 Mafenetre.mainloop()
Tk06.jpg
















TK7

 1 # script cercle.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 import random
 5 def Cercle():
 6     """ Dessine un cercle de centre (x,y) et de rayon r """
 7     x = random.randint(0,Largeur)
 8     y = random.randint(0,Hauteur)
 9     r = 20
10     Canevas.create_oval(x-r, y-r, x+r, y+r, outline='blue', fill='blue')
11 def Effacer():
12     """ Efface la zone graphique """
13     Canevas.delete(ALL)
14 # Création de la fenêtre principale (main window)
15 Mafenetre = Tk()
16 Mafenetre.title('Cercle')
17 # Création d'un widget Canvas (zone graphique)
18 Largeur = 480
19 Hauteur = 320
20 Canevas = Canvas(Mafenetre, width = Largeur, height =Hauteur, bg ='white')
21 Canevas.pack(padx =5, pady =5)
22 # Création d'un widget Button (bouton Go)
23 BoutonGo = Button(Mafenetre, text ='Go', command = Cercle)
24 BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
25 # Création d'un widget Button (bouton Effacer)
26 BoutonEffacer = Button(Mafenetre, text ='Effacer', command = Effacer)
27 BoutonEffacer.pack(side = LEFT, padx = 5, pady = 5)
28 # Création d'un widget Button (bouton Quitter)
29 BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
30 BoutonQuitter.pack(side = LEFT, padx = 5, pady = 5)
31 Mafenetre.mainloop()
Tk07.jpg






















TK8

 1 # script cible.py
 2 #(C) Fabrice Sincère
 3 from tkinter import *
 4 import random
 5 def Cercle():
 6     """ Dessine un cercle de centre (x,y) et de rayon r """
 7     x = random.randint(0,Largeur)
 8     y = random.randint(0,Hauteur)
 9     r = 10
10     # on dessine un cercle dans la zone graphique
11     item = Canevas.create_oval(x-r, y-r, x+r, y+r, outline='black', fill='black')
12     print("Création du cercle (item" , item ,")")
13     # affichage de tous les items de Canevas
14     print(Canevas.find_all())
15 def Undo():
16     """ Efface le dernier cercle"""
17     if len(Canevas.find_all()) > 1:
18         item = Canevas.find_all()[-1]
19         # on efface le cercle
20         Canevas.delete(item)
21         print("Suppression du cercle (item" , item ,")")
22         # affichage de tous les items de Canevas
23         print(Canevas.find_all())
24 def EffacerTout():
25     """ Efface tous les cercles"""
26     while len(Canevas.find_all()) > 1:
27         Undo()
28 # Création de la fenêtre principale (main window)
29 Mafenetre = Tk()
30 Mafenetre.title('Cible')
31 # Image de fond
32 photo = PhotoImage(file="tk_cible.gif")
33 # Création d'un widget Canvas (zone graphique)
34 Largeur = 550
35 Hauteur = 550
36 Canevas = Canvas(Mafenetre,width = Largeur, height =Hauteur)
37 item = Canevas.create_image(0,0,anchor=NW, image=photo)
38 print("Image de fond (item",item,")")
39 Canevas.pack()
40 # Création d'un widget Button
41 BoutonGo = Button(Mafenetre, text ='Tirer', command = Cercle)
42 BoutonGo.pack(side = LEFT, padx = 10, pady = 10)
43 # Création d'un widget Button
44 BoutonEffacer = Button(Mafenetre, text ='Effacer le dernier tir', command = Undo)
45 BoutonEffacer.pack(side = LEFT, padx = 10, pady = 10)
46 # Création d'un widget Button
47 BoutonEffacerTout = Button(Mafenetre, text ='Effacer tout', command = EffacerTout)
48 BoutonEffacerTout.pack(side = LEFT, padx = 10, pady = 10)
49 # Création d'un widget Button (bouton Quitter)
50 BoutonQuitter = Button(Mafenetre, text ='Quitter', command = Mafenetre.destroy)
51 BoutonQuitter.pack(side = LEFT, padx = 10, pady = 10)
52 Mafenetre.mainloop()
Tk08.jpg




Sauvegarde

  • Je travaille sur un système Linux, je réinstalle quelques fois mon système.
  • J'ai besoin pour cela de créer une sauvegarde.

Cahier des charges

  • En utilisant au maximum Python, et de façon sécurisée.
  • voici les différentes parties à sauvegarder sur un autre support:
    • /etc
    • /var
    • /home
    • /root
  • Établir la liste de tous les programmes installés pour les réinstaller.
  • Sauvegarder les crontab.

Shell / Python

  • J'ai créé au cours de toutes ces années Linux, plusieurs centaines de scripts shell, des plus rudimentaires aux plus complexes.
  • Un bon exercice sera de les retranscrire tous en Python.
  • Je commencerai par les plus simples, il y a du travail.....

Gestion Système

Intro

  • Le module os est une bibliothèque dédié aux besoins de gestion de fichiers et de dossiers.
  • Pour python un chemin (ou path ), c'est une chaine de caractères, il existe donc des méthodes pour la manipuler:
1 >>> import os.path
2 >>> help(os.path)
abspath(path)             →   Retourne un chemin absolu
basename(p)               →   Retourne le dernier élément d'un chemin
commonprefix(list)        →   Retourne le chemin commun le plus long d'une liste de chemins
dirname(p)                →   Retourne le dossier parent de l'élément
exists(path)              →   Test si un chemin existe
getaTime(filename)        →   Retourne la date du dernier accès au fichier [os.stat()]
getctime(filename)        →   Retourne la date du dernier changement de métadonnées du fichier
getmTime(filename)        →   Retourne la date de la dernière modification du fichier
getsize(filename)         →   Retourne la taille d'un fichier (en octets) 
isabs(s)                  →   Test si un chemin est absolu
isdir(s)                  →   Test si le chemin est un dossier
isfile(path)              →   Test si le chemin est un fichier régulier
islink(path)              →   Test si le chemin est un lien symbolique
ismount(path)             →   Test si le chemin est un point de montage
join(path, s)             →   Ajoute un élément au chemin passé en paramètre
normcase(s)               →   Normalise la casse d'un chemin
normpath(path)            →   Normalise le chemin, élimine les doubles barres obliques, etc.
realpath(filename)        →   Retourne le chemin canonique du nom de fichier spécifié (élimine les liens symboliques)
samefile(f1, f2)          →   Test si deux chemins font référence au même fichier réel
sameopenfile(f1, f2)      →   Test si deux objets de fichiers ouverts font référence au même fichier
split(p)                  →   Fractionne un chemin d'accès. Retourne un tuple
 1 >>> import os
 2 >>> path = "/home/olivier/scripts/cgi-bin/action.py"
 3 >>> os.path.dirname(path)
 4 '/home/olivier/scripts/cgi-bin'
 5 >>> os.path.basename(path)
 6 'action.py'
 7 >>> os.path.join(path, "func")
 8 '/home/olivier/scripts/cgi-bin/action.py/func'
 9 >>> os.path.split(path)
10 ('/home/olivier/scripts/cgi-bin', 'action.py')
11 >>> os.path.abspath(".")
12 '/home/olivier'

Fichiers

  • Commande Linux: ls -rtl
Linux Python
Nom: rtl Nom: rtl.py
#!/bin/sh #!/usr/bin/python3.8
ls -rtl --color import os
os.system('ls -rtl')