En pratique : Différence entre versions
De TARENTINO
Aller à la navigationAller à la recherche| Ligne 866 : | Ligne 866 : | ||
* Attention ! [http://www.tarentino.fr/index.php?title=En_pratique#Print Les diverses vidéos sont écrite avec une version de Python 2 qui a des différences notoires avec la version 3.] | * Attention ! [http://www.tarentino.fr/index.php?title=En_pratique#Print Les diverses vidéos sont écrite avec une version de Python 2 qui a des différences notoires avec la version 3.] | ||
==== Quizz ==== | ==== Quizz ==== | ||
| + | <div style="width:80%; height:600px; overflow:auto; border:solid 1px black;"> | ||
* Python 2 | * Python 2 | ||
<center> | <center> | ||
| Ligne 904 : | Ligne 905 : | ||
print("Faux, c'est",quest.split(':')[1]) | print("Faux, c'est",quest.split(':')[1]) | ||
</syntaxhighlight> | </syntaxhighlight> | ||
| + | </div> | ||
</div> | </div> | ||
==== Structures Conditionnelles ==== | ==== Structures Conditionnelles ==== | ||
| + | <div style="width:80%; height:600px; overflow:auto; border:solid 1px black;"> | ||
* [https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/231174-creez-des-structures-conditionnelles '''openclassroom'''] | * [https://openclassrooms.com/fr/courses/235344-apprenez-a-programmer-en-python/231174-creez-des-structures-conditionnelles '''openclassroom'''] | ||
Déterminer si une année saisie par l'utilisateur est bissextile. Il s'agit d'un sujet très prisé des enseignants en informatique quand il s'agit d'expliquer les conditions. Mille pardons, donc, à ceux qui ont déjà fait cet exercice dans un autre langage mais je trouve que ce petit programme reprend assez de thèmes abordés dans ce chapitre pour être réellement intéressant. | Déterminer si une année saisie par l'utilisateur est bissextile. Il s'agit d'un sujet très prisé des enseignants en informatique quand il s'agit d'expliquer les conditions. Mille pardons, donc, à ceux qui ont déjà fait cet exercice dans un autre langage mais je trouve que ce petit programme reprend assez de thèmes abordés dans ce chapitre pour être réellement intéressant. | ||
| Ligne 917 : | Ligne 920 : | ||
Sinon, elle n'est pas bissextile. | Sinon, elle n'est pas bissextile. | ||
Sinon, elle est bissextile. | Sinon, elle est bissextile. | ||
| + | </div> | ||
== Graphismes == | == Graphismes == | ||
Version du 12 avril 2020 à 00:30
Array
Réferences: Doctor Python Pythonnerie sdz.tdct.org Python en ligne
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
1 #!/usr/bin/env python3
2 print("Hello, world ! bientôt l'été")
Hello, world ! bientôt l'été
Exercice Hello Word compatible Python 2 et Python 31 #!/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é
Python 2: print "bonjour"
Python 3: print("bonjour")
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="")
ExceptionsPython 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 modulesPython 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éorganisationPython 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'))
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
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)
Un tirage est composé de : - Un numéro de tirage - Les 5 boules - Le numéro Chance
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
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
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 )
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)
|
Premiers programmes
Quizz
- Python 2
Création d'un programme Quizz
|
Conversion en Python3
1 #!/usr/bin/python3
2 # -*- coding: utf-8 -*-
3 from random import choice
4 #from string import maketrans
5 accents="éèçêàôùû"
6 asciis="eeceaouu"
7 conversion=str.maketrans(accents, asciis)
8 adieu = ['fin', 'stop', 'bye', 'ciao']
9 reponse = 'X'
10 questions=['Allemagne:Berlin',
11 'Autriche:Vienne',
12 'Belgique:Bruxelle',
13 'Bulgarie:Sofia',
14 'Chypre:Nicosie',
15 'Danemark:Copenhague']
16 print('Donner la capitale du pays....')
17 print('Répondre "fin", "bye", ou "ciao" pour arrêter')
18 while reponse not in adieu:
19 quest=choice(questions)
20 reponse=input(quest.split(':')[0]+'? ').lower()
21 if reponse not in adieu:
22 if reponse.translate(conversion)==quest.split(':')[1].lower():
23 print(':)')
24 else:
25 print("Faux, c'est",quest.split(':')[1])
Structures Conditionnelles
Déterminer si une année saisie par l'utilisateur est bissextile. Il s'agit d'un sujet très prisé des enseignants en informatique quand il s'agit d'expliquer les conditions. Mille pardons, donc, à ceux qui ont déjà fait cet exercice dans un autre langage mais je trouve que ce petit programme reprend assez de thèmes abordés dans ce chapitre pour être réellement intéressant. Les règles qui déterminent si une année est bissextile ou non.
Une année est dite bissextile si c'est un multiple de 4, sauf si c'est un multiple de 100. Toutefois, elle est considérée comme bissextile si c'est un multiple de 400. Si une année n'est pas multiple de 4, on s'arrête là, elle n'est pas bissextile. Si elle est multiple de 4, on regarde si elle est multiple de 100. Si c'est le cas, on regarde si elle est multiple de 400. Si c'est le cas, l'année est bissextile. Sinon, elle n'est pas bissextile. Sinon, elle est bissextile.
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()
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()
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()
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()
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()
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()
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()
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()
|
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 --color') |







