Cours. Langage de programmation Python.



Documents pareils
L informatique en BCPST

Initiation à l informatique. Module 7 : Le courrier électronique ( , mail)

Initiation à la programmation en Python

TAGREROUT Seyf Allah TMRIM

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Tutoriel d'utilisation du logiciel Thunderbird version 2.0

Comment envoyer un en gardant les adresses de ses correspondants confidentielles!!!

SE CONNECTER A LA MESSAGERIE ACADEMIQUE ET A CIRCON SCRIPT

WinTask x64 Le Planificateur de tâches sous Windows 7 64 bits, Windows 8/ bits, Windows 2008 R2 et Windows bits

Comment se connecter au dossier partagé?

TP 1. Prise en main du langage Python

Je communique par

Vous y trouverez notamment les dernières versions Windows, MAC OS X et Linux de Thunderbird.

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Utilisation de l . Sommaire

Traitement de texte : Quelques rappels de quelques notions de base

BIND : installer un serveur DNS

Navigation dans Windows

Atelier Introduction au courriel Utiliser Guide de l apprenant

Manuel d utilisation NETexcom

(Fig. 1 :assistant connexion Internet)

Qu est ce qu un ?

Algorithme. Table des matières

PARAMETRAGE CONSOLE ADMINISTRATION DE MESSAGERIE "VENDOME.EU" NOTICE UTILISATION

Utilisez Toucan portable pour vos sauvegardes

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Guide de l'utilisateur

Documentation Honolulu 14 (1)

Connexion à SQL server

ROUTAGE. Répondez aux questions suivantes : (A chaque fois pour XP et pour Debian)

La messagerie électronique avec La Poste

DECOUVERTE DE LA MESSAGERIE GMAIL

Manuel du logiciel PrestaTest.

Algorithmique et Programmation, IMA

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Guide d utilisation du service de transfert sécurisé de fichiers. Édition du 3 octobre 2011

Date M.P Libellé Catégorie S.Catégorie Crédit Débit Solde S.B

Présentation du langage et premières fonctions

L accès à distance du serveur

Traitement de données

But de cette présentation

Couche application. La couche application est la plus élevée du modèle de référence.

Installation et utilisation du client FirstClass 11

FORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères

Utilisation du client de messagerie Thunderbird

Manuel d'utilisation d'apimail V3

Institut Supérieure Aux Etudes Technologiques De Nabeul. Département Informatique

Envoyer et recevoir son courrier

Atelier Le gestionnaire de fichier

Installation de la messagerie EMWAC IMS Sur Windows NT4 serveur ou Windows 2000 serveur

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Introduction au langage C

Club informatique Mont-Bruno Séances du 18 janvier et du 17 février 2012 Présentateur : Michel Gagné

I Pourquoi une messagerie?

1 LA MESSAGERIE ELECTRONIQUE 2 MESSAGERIE : BOITES ET SYMBOLES. 1.1 Comment fonctionne-t-elle? 2.1 Les BOÎTES ou dossiers


PRODUITS Utiliser la messagerie intégrée dans VisualQie

Configurer son logiciel de mails.

Utiliser ma messagerie GMAIL

TP Protocoles SMTP et POP3 avec Pratiquer l algorithmique

Serveur de messagerie sous Debian 5.0

TP PLACO. Journées Mathrice d'amiens Mars 2010

Accès distant Freebox v6 Configuration

Document d accompagnement pour l utilisation du Cartable en ligne Lycée des Métiers Fernand LÉGER 2013/2014

Chapitre I Notions de base et outils de travail

Classer et partager ses photographies numériques

Utiliser un client de messagerie

USTL - Licence ST-A 1ère année Initiation à la programmation TP 1

INSTALLATION CONFIGURATION D OWNCLOUD. La réponse informatique

Chapitre 1 Qu est-ce qu une expression régulière?

UltraVnc n'est pas entièrement compatible avec Windows Vista.

SAUVEGARDER SES DONNEES PERSONNELLES

SERVEUR DE MESSAGERIE

10. Envoyer, recevoir des mails

Services sur réseaux. Trois services à la loupe. Dominique PRESENT Dépt S.R.C. - I.U.T. de Marne la Vallée

Protéger une machine réelle derrière une machine virtuelle avec pfsense

[OUTLOOK EXPRESS WINDOWS MAIL]

"Indy\Source\Fulld7.bat" 6. Lancer à présent Delphi. Allez dans le menu "Composant" puis sur "Installer des paquets...".

Vous pouvez envoyer des s à vos clients, fournisseurs, laboratoires ou confrères, de presque n importe où dans Cinnaber.

Bernard HAMM, Évelyne LAVOISIER

Service Informatique et Télématique (SITEL), Emile-Argand 11, 2009 Neuchâtel, Tél ,

Installation personnalisée d'oracle 10g

Il est courant de souhaiter conserver à

Préparation à l installation d Active Directory

Un ordinateur, c est quoi?

Guide plateforme FOAD ESJ Lille

Boîte électronique. Découverte des principales fonctions d une messagerie électronique. (et les pièces jointes)

Module Communication - Messagerie V6. Infostance. Messagerie

Tropimed Guide d'installation

Rangement du Menu Démarrer

Les outils de SEO (Référencement naturel) et les Sites SharePoint Public sur Office 365

1 - Se connecter au Cartable en ligne

Comment créer vos propres pages web?

Le routeur de la Freebox explications et configuration

Bac Professionnel Systèmes Electroniques Numériques

IV- Comment fonctionne un ordinateur?

Transcription:

Cours Langage de programmation Python. Ecrit par MAYERAU David. Etudiant de 1 ère année, en BTS SIO (Service Informatique aux Organisations), au Lycée Polyvalent Blaise Pascal. Année 2011/2012. Mail : d.mayerau@gmail.com 1

Sommaire. Partie théorique Chapitre 1 : Introduction....P.3 - Qu est-ce que Python?...P.3 - A quoi sert-il?...p.3 - Comment l utiliser?...p.3 Chapitre 2 : Avantages et inconvénients.p.3 Partie pratique Chapitre 3 : Exemples.....P.5 - «Hello World!!!»..P.5 - Calculs.....P.6 - Manipulation de fichiers.....p.8 - Création d un fichier «zip».. P.10 - Connexion à un serveur FTP. P.12 - Envoie d un mail. P.14 Chapitre 4 : Suppléments.P.24 - Commandes systèmes.....p.24 - Gestion des exceptions..p.25 - Utilisation du logiciel cx_freeze 4.2.3.......P.26 Fiche de procédure - Installation du logiciel Python 3.2.3....P.31 - Installation du logiciel cx_freeze 4.2.3...P.36 2

Chapitre 1 : Introduction. Python est un langage de programmation de haut niveau, car il est plus proche du langage humain. Il est né en 1991 pour la 1 ère version publique. La version la plus récente qui existe aujourd hui est la v3.2.3, cependant il y a des débats qui tournent autour de cette version et de la version 2.7. Le langage Python est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser. Ce langage est plutôt destiné aux administrateurs réseaux, afin de les aider dans leurs tâches quotidiennes. Ce langage s utilise grâce à un logiciel, GRATUIT, qui offre un environnement simple et efficace. Chapitre 2 : Avantages et inconvénients. Voyons maintenant les avantages de ce langage. Tout d abord Python est langage interprété, c est-à-dire qu il lit le code source puis il produit un pseudo code intermédiaire. Ensuite l interpréteur python lit le pseudo code et le résultat apparaît à l écran. Code Source Lancement de l interpréteur Résultat Création du pseudo-code Contrairement à un compilateur qui produit un code binaire après avoir lu le code source et qui crée un.exe, à la fin. Code Source Compilateur Fichier Exécutable Exécution Résultat «Les langages interprétés sont portables car ils évitent la production d'un programme compilé dont le code exécutable est spécifique à une architecture particulière. La programmation de tels programmes est également plus rapide (la phase de compilation est souvent longue).» Ensuite, il est portable donc multiplateforme, c est-à-dire qu il est possible de l utiliser sur n importes quels systèmes d exploitations et sans contraintes matérielles (type de processeurs, cartes graphiques, ). Ce langage est extensible : il peut être interfacé avec d'autres langages (C, C++, Delphi, Java,...). Le Python et le Java ont même été accouplés pour donner naissance à JPython. De plus, Python est orienté objet. 3

Pour ce qui est du codage, Python utilise moins de syntaxes lourdes. Il n est pas nécessaire d écrire de nombreuses lignes de code pour réaliser une action simple. Il est très facile à apprendre car la syntaxe est simple et claire. On utilise des entiers, des réels, des chaînes, ainsi que des instructions d une grande puissance. Afin que le script soit clair, Python exige que l on utilise des indentations pour différencier les blocs d exécutions : Cette technique est très pratique et permet d éviter les {, }, BEGIN, END, ENDFOR, ENDIF, Un programme Python est souvent 3 à 5 fois plus court qu un programme en C ou C++. Le temps de développement est 5 à 10 fois plus court. La force de Python réside également dans ses bibliothèques additionnelles, très riches en fonctionnalités, très nombreuses, très simples en utilisations, très bien documentées. Il est donc possible de créer facilement : - Des scripts systèmes. - Des utilitaires réseaux. - Des applications accédant à des bases de données. - Des applications web. - Des applications graphiques ou multimédia. - Des jeux. A premier vu, ce langage à l air d être parfait mais n a-t-il pas des faiblesses tout de même? Eh bien SI!. Comme tout langage de programmation, Python à quelques faiblesses. Première chose, il ne crée pas d exécutable automatiquement. Du fait que c est un langage interprété, il se contente d afficher le résultat. Si l on souhaite avoir un exécutable à la fin, il est obligatoire de télécharger un logiciel appelé «cx_freeze». De plus, lorsque vous avez créé votre exécutable, si vous souhaitez le donner à quelqu un, vous devez impérativement fournir le fichier «python32.dll». 4

Ensuite, il a un gros problème au niveau de l exécution. Par rapport au C++, la vitesse d exécution de Python est plus lente, la cause étant l utilisation d un interpréteur. Chapitre 3 : Exemples. Ça y est, nous passons enfin à la pratique. Tout d abord vous devez vous rendre à la page 31 afin d installer le logiciel nécessaire. «Hello World!!!». Nous allons commencer par afficher quelque chose à l écran et pour cela nous allons utiliser le fameux «Hello World!!!» Tout d abord il vous faut lancer le logiciel IDLE (Python GUI), puis vous devez cliquer sur le menu «File», «New Window». Voilà, vous vous retrouvez avec une jolie fenêtre toute blanche. Maintenant nous allons pouvoir commencer à taper du code. Commencer par écrire le script suivant : # ############################### # # Script pour afficher une ligne de texte. # # ############################### # # Affichage du texte suivant. print( Hello World!!! ) Etudions un peu ceci. Vous pouvez voir que j ai commencé par écrire un commentaire qui explique le fonctionnement général de ce script. J ai fait de même pour la ligne qui va permettre d afficher le texte. Pourquoi mettre des commentaires dans un script? Un script, au départ c est une petite idée. Puis cette idée va se développer au fur et à mesure pour ensuite donner quelque chose d énorme. Par la suite, ce script pourra être utilisé par d autres personnes dans le monde, si vous souhaitez le partager bien entendu. Maintenant imaginons que vous le partagez sur Internet et qu une autre personne souhaite s en servir. Si vous ne mettez pas un minimum de commentaires pour expliquer comment votre script fonctionne, il ne sera jamais comment vous vous y êtes pris pour arriver au résultat. Sachez qu il existe deux types de commentaires : - Les commentaires de documentation : Utilisés pour expliquer le rôle d une fonction. Il suffit de mettre trois guillemets en début et fin de ligne de texte. - Les commentaires de développement : Utilisés pour expliquer chaque ligne de code. Il suffit de mettre un «#» juste avant le texte. Maintenant que vous avez compris le concept des commentaires, nous allons passer à la ligne qui permet d afficher le texte. 5

En python, la syntaxe est extrêmement courte par rapport à d autres langages. En effet, il suffit d écrire une seule ligne pour afficher du texte. Il n y a ni bibliothèques à importer, ni accolades à ouvrir. C est un vrai bonheur. Par contre, vous pouvez voir que c est assez proche du langage C. En effet, nous utilisons un «print» et en C, il s agit d un «printf». Puis nous utilisons des : en C nous utilisons des guillemets. Et pour finir, nous encadrons le texte par des parenthèses : en C nous encadrons le texte par des parenthèses MAIS nous terminons par un «;». Cependant, une fois cette UNIQUE ligne de code écrite, vous devez enregistrer votre script sous le nom que vous souhaitez MAIS suivi de l extension «.py». Maintenant il ne vous reste plus qu à admirer le travail et pour cela il existe deux méthodes pour lancer votre script : - 1 ère méthode : Appuyer sur la touche F5, le script utilisera l environnement graphique de Python pour afficher le résultat. - 2 ème méthode : Double cliquer sur le fichier «.py», le script utiliseras une fenêtre DOS pour afficher le résultat. Pourquoi il est obligatoire d enregistrer notre script en «.py»? Eh bien parce qu il existe deux extensions possibles. En effet, il y a l extension «.py» pour lancer le script en mode simple, c'est-à-dire qu une fenêtre DOS peut apparaître suivant les commandes que vous utilisez. Par exemple : Si vous utilisez des commandes systèmes dans votre script, une fenêtre DOS apparaîtra pour chacune de ces commandes. Puis il y a l extension «.pyw» qui doit permettre de masquer ces fenêtres DOS. Calculs. Comme tous langages de programmations, il est intéressant que l on puisse utiliser toutes sortes de symboles mathématiques. En effet, si l on souhaite automatiser des calculs compliqués que l on ne peut faire de têtes ou encore créer des scripts pour faire de la comptabilité, avec Python c est possible. Nous allons donc commencer par des calculs simples, (additions, soustractions, multiplications, divisions). Utilisons le script suivant : # ################################ # # Script pour des calculs mathématiques. # # ################################ # # Création de deux constantes "a" et "b". # Nous les utiliserons pour nos calculs. a = 12 b = 45 6

# Premier calcul : additionner deux nombres print (a + b) # Deuxième calcul : soustraire deux nombres print (a - b) # Troisième calcul : multiplier deux nombres print (a * b) # Quatrième calcul : diviser deux nombres print (a / b) Rien de bien compliqué, nous utilisons les quatre symboles mathématiques les plus connues, (+, -, *, /), pour faire nos calculs. Le seul élément nouveau que nous utilisons dans ce script est les constantes «a» et «b». Qu est ce qu une constante? Une constante est un identificateur qui contient une valeur qui ne sera jamais modifiée au cours du programme. Passons maintenant à des calculs un peu plus poussés. # ################################ # # Script pour des calculs mathématiques. # # ################################ # # Création de quatre variables "a", "b", "c" et "d". # Nous les utiliserons pour nos calculs. a = 12 b = 45 c = 2.65 d = 45.002 # Premier calcul print (- a + b) # Deuxième calcul print (a - (-b)) # Troisième calcul print (c * d) # Quatrième calcul print (d / c) Dans le script ci-dessus, nous utilisons deux nouvelles constantes «c» et «d» qui contiennent des nombres à virgules. Les deux premiers calculs utilisent les constantes «a» et «b» mais de façons négatives, (-a b ou a + b ). Puis les deux seconds calculs utilisent les deux constantes «c» et «d». Il est donc possible de faire des calculs intéressent sans se tortiller la tête dans tous les sens. Continuons avec le modulo. 7

Voici à quoi ressemble une opération contenant un modulo : # ########################### # # Script pour calculer un MODULO. # # ########################### # # Création de deux variables "a" et "b". # Nous les utiliserons pour notre calcul. a = 10 b = 3 # Calcul. print (a%b) Le résultat de ce script sera 1. A quoi sert un modulo au juste? L'opérateur «%», que l'on appelle le «modulo», permet de connaître le reste de la division. Manipulation de fichiers. Passons à la manipulation de fichiers. Il serait, quand même, intéressant de pouvoir manipuler des fichiers comme on le souhaite, Tout d abord, nous allons commencer par lire un fichier texte déjà existant. Pour cela nous allons utiliser le script suivant : # ################################## # # Script pour lire un fichier DEJA existant!!! # # ################################## # # Création de la variable "MonFichier" qui contient le chemin du fichier cible. # Nous utilisons l'option "r" pour le lire. # Toutefois, cette option est mise par défaut. MonFichier = open('g:\\mailseul.txt', 'r') # Ensuite nous utilisons la variable "ContenuFichier" pour lire # le contenu du fichier. Nous utilisons pour cela la méthode "read()". ContenuFichier = MonFichier.read() # Ensuite on referme le fichier. MonFichier.close() # Si vous ne rajoutez par cette ligne, il n'y aura rien d'affiché dans la fenêtre. print(contenufichier) Voilà, le script est fini. Il nous a fallu 4 lignes pour lire un fichier texte. Vous pouvez voir qu il n y a toujours aucun module dans ce script. Par contre nous allons nous intéresser de plus près au «r» et au «read()». 8

Il faut savoir que des options sont requises lorsque l on manipule des fichiers en Python. Les voici : - r = Ouverture du fichier texte en lecture seule. - w = Ecraser la cible si elle existe déjà. Cette option permet aussi de créer un fichier vierge. - a = Ajouter de nouvelles informations à l intérieur d un fichier texte déjà existant. Et il existe, également, des méthodes : - read() = Permet de lire l intégralité du contenu du fichier en un seul coup. - readline() = Permet de lire le contenu du fichier MAIS lignes à lignes. Le séparateur par défaut est \n (retour chariot). - readlines() = Transfère toutes les lignes du fichier dans une variable séquence. - splitlines() = Sépare une chaîne composée de plusieurs lignes, en plusieurs éléments d une variable de type séquence. - strip() = Elimine les espaces en début et fin de ligne de texte. - startwith(chaineatester) = Permet de s assurer qu une ligne débute bien par la chaîne à tester. - find(chaineachercher) = Permet de retrouver une chaîne de caractère, un mot ou bien une lettre. - partition(separateur) = Créer une séparation. Exemple : MonFichier = 'Bienvenue à l\'iut de Châteauroux!!!' print(monfichier.partition('à')) Le résultat affiché sera : ('Bienvenue ', 'à', " l'iut de Châteauroux!!!") Continuons, à présent, avec l écriture dans un fichier texte. Regardons le script suivant : # ################################## # # Script pour écrire dans un fichier texte!!! # # ################################## # # Création de la variable "MonFichier" qui contient le chemin du fichier cible. # Nous utilisons l'option "w" pour écrire. MonFichier = open('g:\\mailseul.txt', 'w') # Ensuite nous utilisons la méthode "write()", pour écrire le texte # que l'on souhaite. MonFichier.write('Bienvenue à l\'iut de Châteauroux!!!') # Ensuite on referme le fichier. MonFichier.close() Vous pouvez encore remarquer qu il n y a pas énormément de lignes de codes, cependant elles nous permettent d écrire dans un fichier texte. Maintenant analysons de plus près la syntaxe. Nous avons utilisé l option w afin d écrire dans le fichier. 9

Rappelez-vous, l option w permet également de créer un fichier texte s il n existe pas encore. Ensuite nous avons utilisé la méthode «write()» pour écrire le texte souhaité à l intérieur du fichier texte. Nous pouvons voir qu à l intérieur du «write()», il y a un «\». Il est obligatoire de le mettre lorsque l on souhaite mettre des apostrophes dans le texte. Il existe d autres conventions de codages semblables à ça. Les voici : o \n = retour chariot (allez à la ligne). o \t = tabulation (espace de 4 caractères). o \\ = écriture d un «\» dans le fichier texte. Il faut faire attention à ces caractères spéciaux car il est facile de faire des erreurs de syntaxes. Exemple 1 : print('canapé\table!!!') La ligne ci-dessus donnera comme résultat : Canapé able!!! Pourquoi le «t» n apparaît pas? Eh bien parce qu il y a un «\» juste avant la lettre «t» et pour le script «\t» veut dire «tabulation». Exemple2 : Pour faire apparaître le texte au complet il faut écrire cette ligne : print('canapé\\table!!!') La ligne ci-dessus donnera comme résultat : Canapé\table!!! Il en sera de même pour le \n. Création d un fichier «zip» Nous allons maintenant apprendre à créer un fichier «zip». Pour cela, il va être nécessaire d importer un module, afin que python arrive à comprendre le script. # ################################ # # Script pour la création d'un fichier "zip". # # ################################ # # Importation du module nécessaire. Import gzip # Création de la variable "ficoriginal" pour # l'ouverture du fichier cible en mode lecture par bit. ficoriginal = open('g:\\divers\\entretien.pdf',mode = 'rb') 10

# Création de la variable "ficcompresse" pour # l'ouverture du fichier cible en mode écriture par bit. # On concaténe également l'extension "!;gz" pour créer le fichier au format "zip". ficcompresse = gzip.open('g:\\divers\\entretien.pdf' + '.gz', mode = 'wb') # Création d'une boucle "for" pour lire lignes à lignes le fichier cible. for ligne in ficoriginal.readlines(): # Ensuite écriture dans le fichier "zip" précédemment créé. ficcompresse.write(ligne) # Et pour finir fermeture des deux variables. ficcompresse.close() ficoriginal.close() Analysons tout ce charabia. Nous avons d abord importé le module «gzip», qui permettra la création du fichier «zip». Ensuite nous utilisons une variable pour ouvrir le fichier, qui nous intéresse, en mode lecture par bit. Qu est-ce qu une variable? Une variable est un identificateur qui contient une valeur pouvant être modifiée au cours du programme. Pourquoi avoir utilisé le mode «rb»? Le mode «rb» permet de lire un fichier en mode lecture par bit. Exemple : si l on souhaite transformer un fichier «.bmp», on utilisera le mode «rb». De plus, il existe également le mode «wb», utilisé pour ouvrir un fichier en mode écriture par bit. Continuons notre analyse. Vous avez sûrement remarqué deux éléments nouveaux dans la variable «ficcompresse». Effectivement, il y a le «gzip.» : cette instruction va nous permettre de créer un fichier «zip». Puis il y a le «+», situé entre 'G:\\divers\\entretien.pdf' et '.gz'. Il s agit d une concaténation, on va forcer le script à intégrer l extension «.gz» au fichier «entretien.pdf». De cette manière nous aurons un fichier «zip» vierge. Il nous reste donc à copier tout le contenu du fichier cible dans notre fichier «zip» vierge. Pour cela, nous allons utiliser une boucle «for» afin d automatiser l écriture. Cette boucle va utiliser la méthode «readlines()», que nous avons vu précédemment, pour lire lignes à lignes le contenu du fichier cible et écrire ces lignes dans le fichier «zip» vierge. Donc l action est la suivante : la boucle lit la première ligne du fichier cible puis elle écrit cette ligne dans le fichier «zip» vierge et ainsi de suite Et pour finir on n oublie pas de fermer les deux fichiers en utilisant le «.close()» 11

ATTENTION : Vous devez obligatoirement mettre les «:» à la fin de la parenthèse, de la boucle «for», autrement le script vous renverra une erreur de syntaxe. Connexion à un serveur FTP. Les serveurs FTP sont très utilisés dans le monde. Ils permettent de stocker des informations et de les partager. Evidemment, le protocole FTP est très utilisé par les administrateurs réseaux et donc il serait intéressent de pouvoir créer des connexions automatisées grâce au langage Python. Nous allons donc voir comment créer un script Python pour automatiser une connexion à un serveur FTP puis récupérer un fichier. Regardons le script suivant : # #################################### # # Script pour se connecter à un serveur FTP + # # afficher et récupérer des informations. # # #################################### # # Importation du module nécessaire. import ftplib # On choisit le serveur FTP sur lequel on souhaite se connecter. connexftp = ftplib.ftp('ftp8.freebsd.org') # Une fois la connexion établie, on demande à afficher un message de bienvenue. # Ce message nous permet d'être sûr qu'on est bien connecté. connexftp.getwelcome() # Ensuite on entre un login et un mot de passe. # Comme on en connait aucun, on utilise un login et un mdp par défaut. connexftp.login('anonymous', ' ') # Ensuite on affiche ce qu'il y a sur le serveur. connexftp.dir() # Puis on demande à ouvrir le chemin qui nous intéresse. connexftp.cwd('pub/cpan') # Maintenant on va télécharger un fichier. # Pour cela on va utiliser la méthode "retrbinary", # ainsi que le mode "wb" et la méthode "write". connexftp.retrbinary('retr index.html', open ('C:\\index.html', 'wb').write) # Et pour finir, on n'oublie pas de fermer la connexion connexftp.close() Tout d abord vous pouvez voir qu un module est nécessaire : «ftplib». Sans lui le script ne pourrait pas fonctionner. Donc, une fois ce module importé, on peut continuer la suite. 12

On commence d abord par définir le serveur FTP sur lequel on souhaite se connecter. On va donc utiliser une variable «connexftp». On utilisera cette variable tout au long du script. De plus, pour définir le serveur FTP, il est obligatoire d utiliser la méthode «ftplib.ftp()» et c est à l intérieur des parenthèses que l on met l adresse du serveur. Une fois la connexion établie, on demande à afficher un message de bienvenue, grâce à la commande «connexftp.getwelcome()». Vous pouvez remarquer que l on met la variable créée précédemment avant le «.getwelcome()». Maintenant, il nous faut fournir un login et un mot de passe afin de pouvoir accéder aux informations contenues sur le serveur. Pour cela nous allons utiliser la commande «connexftp.login()». Là encore, nous utilisons la variable «connexftp». Cependant, comment savoir quel login et quel mot de passe nous devons utiliser nous ne sommes pas censés avoir un compte sur ce serveur. Alors comment faire? Eh bien, nous allons tout simplement utiliser le login et le mot de passe par défaut qui fonctionne sur n importe quel serveur FTP. Pour le login, vous devez utiliser «anonymous» et pour le mot de passe, il n y a rien à mettre. Plutôt cool non!!! Ca y est, nous sommes enfin connectés au serveur FTP. Nous allons donc pouvoir accéder aux informations. Pour cela, vous devez utiliser la commande «.dir()». Tiens, une commande assez familière. En effet, la commande «dir» est utilisée pour afficher des informations dans une invite de commandes sous windows. Et voilà, nous savons comment faire pour accéder aux informations du serveur ET sans connaître le mot de passe. Il serait intéressent, maintenant, de pourvoir récupérer quelque chose. C est parti, nous allons récupérer un fichier quelconque. Tout d abord, vous devez vous balader un peu sur le serveur afin de trouver le fichier que vous désirez. Pour cela vous devez utiliser la commande «.cwd( nom )» pour avancer dans les dossiers et la commande «.cwd( / )» pour revenir en arrière. Une fois que vous avez trouvé quelque chose, il faut le copier et pour ça il faut utiliser la commande «.retrbinary( RETR, open(, wb ).write). Ah tiens, on retrouve des choses que l on a déjà vu : Le mode «wb» utilisé pour des fichiers binaires et la méthode «write» pour écrire. Qu est ce que retrbinary? «retrbinary(commande, rappel[, tailleblocmax[, reste]])» permet de récupérer un fichier en mode de transfert binaire. «commande» doit être une commande "RETR" appropriée, c'est-à-dire 'RETR nomfichier'. Et pour finir, vous ne devez pas oublier de fermer la connexion FTP, une fois que vous avez fini. 13

Envoie d un mail. Nous allons terminer ce cours par un script très intéressent mais inquiétant aussi. Soyez très attentif car ce que vous allez lire par la suite donne à réfléchir!!! Donc, le script suivant va vous permettre d envoyer des mails à n importe qui. Vous pourrez envoyer des mails simples, (juste du texte), ou des mails avec des pièces jointes. On va commencer par analyser en détails le script suivant. Il est, en fait, composé de deux scripts : le premier est le script principal et le second est la bibliothèque qui contient deux fonctions nécessaires pour un bon fonctionnement. Vous devrez donc enregistrer le script principal et la bibliothèque séparément. # ################################## # #!!! SCRIPT PRINCIPAL!!! # # # # Programme d'envoi automatisé de mail # # suite à l'appel d'une fonction # # ################################## # # Module nécessaire pour masquer le mot de passe d'une adresse GMAIL. import getpass # Importation de la bibliothèque nécessaire au fonctionnement du script. from FonctionMail import * # Affiche d'un message d'accueil. print('programme d\'envoi d\'email.\n') # Utilisation de la variable "Exp" pour contenir # l'adresse e-mail de l'expéditeur. Exp = input('veuillez saisir l\'adresse e-mail de l\'expéditeur :\n') # Utilisation de la variable "Dest" pour contenir # l'adresse e-mail du destinataire. Dest = input('veuillez saisir l\'adresse e-mail du destinataire :\n') # Utilisation de la variable "Objet" pour contenir # l'objet du mail. Objet = input('veuillez saisir l\'objet de votre e-mail:\n') # Utilisation de la variable "Corps" pour contenir # le texte que l'on souhaite envoyer. Corps = input('veuillez saisir le texte de votre e-mail :\n') # Utilisation de la variable "Question" pour contenir # la réponse de l'utilisateur au sujet de la pièce jointe. Question = input('désirez-vous ajouter une pièce jointe? (Oui/Non)\n') # D'abord on transforme la réponse de l'utilisateur en majuscule obligatoirement. # Ensuite on traite la réponse, si la variable "Question" est égale à "Oui... if Question.upper() == 'OUI' : 14

# On crée une variable "PJ" pour demander le chemin de la pièce jointe. # Le chemin doit être du type suivant : (Ex) C:\Users\docs\test.jpg PJ = input ('Veuillez indiquer le chemin de la pièce jointe :\n') # Autrement... else : # La variable "PJ" ne contient rien. PJ = '' # Ensuite on procède à un découpage de l'adresse de l'expéditeur # en utilisant le symbole "@". Decoupage1 = Exp.partition('@') # Puis on récupère le serveur smtp de cette adresse : (Ex) orange.fr # On met ce groupe de mots dans une variable "Decoupage2". Decoupage2 = Decoupage1[2] # Si le "Decoupage2" est égale à "gmail.com"... if Decoupage2 == 'gmail.com' : # On utilise la variable "MDP" afin de demander le mot de passe du compte. # Pour plus de sécurité, on utilise la méthode "getpass" qui permet de masquer # le mot de passe. # ATTENTION : cette méthode ne fonctionne qu'en double cliquant sur le fichier ".py" MDP = getpass.getpass("veuillez indiquer votre mot de passe GMAIL :\n") # Puis on récupère toutes les informations précédentes + le mot de passe, # dans une variable "Resultat". Resultat = NouvGMAIL(Exp, MDP, Dest, Objet, Corps, PJ) # Autrement... else : # On récupère toutes les informations précédentes dans une variable "Resultat". Resultat = NouvMail(Exp, Dest, Objet, Corps, PJ, Decoupage2 # On affiche des informations pour l'utilisateur. print (Resultat) # Tant que l'utilisateur n'appuie pas sur une touche, le programme attend. input('appuyer sur une touche pour terminer!!!') 15

# ################################################## # #!!! BIBLIOTHEQUE!!! # # # # Fonction d'envoi automatisé de mail avec pièce jointe # # et avec un corps de mail stocké dans un fichier texte # # ################################################## # # Importer le module SMTPLIB pour pouvoir envoyer l'e-mail import smtplib # Importation du module nécessaire pour la pièce jointe et # l'encodage dans un format propriétaire ou inconnu. from email import encoders # Module servant à utiliser l'utf8 pour les accents dans le sujet de l'e-mail. from email.header import Header # Importation du module pour manipuler un texte en format MIME. from email.mime.text import MIMEText # Importation du module pour manipuler un fichier, propriétaire ou # de type inconnu, en format MIME. from email.mime.base import MIMEBase # Importation du module pour pouvoir joindre fichier ET texte dans le même e-mail. from email.mime.multipart import MIMEMultipart # ################################################################## # # Fonction pour envoyer un mail simple ou avec pièces jointes. # # Cette fonction est utilisée UNNIQUEMENT pour toutes sortes d'adresses e-mail # # SAUF pour des adresses GMAIL!!! # # ################################################################## # def NouvMail(Exp, Dest, Objet, Corps, PJ, Decoupage2) """ Fonction qui envoi automatiquement un mail suite aux informations demandées.""" # Préparons le support de l'e-mail en convertissant en format MIME # le corps du mail lu depuis le programme principal. MonCorpsEMail = MIMEText(Corps, _charset='utf8') # Préparons le support au texte ET au fichier. MonEMail = MIMEMultipart() MonEMail.attach(MonCorpsEMail) 16

# Si la variable pièce jointe contient quelque chose... if PJ!= '' : # Ouvrons le fichier qui contient la pièce jointe en mode lecture/binaire. MonFichier = PJ Fichier = open(monfichier, 'rb') # Définissons un type par défaut. CType = 'application/octet-stream' TypePrincipal, SousType, = CType.split('/', 1) print('.', end='') # Préparons l'utilisation du fichier. MonFichierJoint = MIMEBase(TypePrincipal, SousType) MonFichierJoint.set_payload(Fichier.read()) Fichier.close() MonFichierJoint.add_header('Content_Disposition', 'attachment', filename = MonFichier) encoders.encode_base64(monfichierjoint) print('.\n') print ('Encodage de la pièce jointe terminée.\n') MonEMail.attach(MonFichierJoint) # Remplissons maintenant tous les autres éléments # de l'objet MonEMail qui ont été fabriqués suite à l'appel de # la méthode MIMEMultipart. MonEMail['Subject'] = Header(Objet, 'utf8') MonEMail['From'] = Exp MonEMail['To'] = Dest print('elements du mail remplis.\n') Serveur = 'smtp.' # On concatène la variable "Decoupage2" à la variable serveur. # Cela pourrait donner par exemple : smtp.orange.fr Serveur += Decoupage2 print ('Votre serveur smtp est :\n') print (Serveur) # Maintenant que l'e-mail est prêt, envoyons-le par les commandes SMTP # puis send_message (de la bibliothèque smtplib) # en utilisant notre serveur (perso) d'envoi de mail de notre boîte perso. ServeurSMTP = smtplib.smtp(serveur) print ('Votre message va être envoyé.') ServeurSMTP.send_message(MonEMail) 17

# Ne pas oublier de QUITTER LE SERVEUR une fois le mail expédié! ServeurSMTP.quit() print ('Fin') MessageFin = 'Envoi d\'e-mail terminé.' return MessageFin # ########################################################## # # Fonction pour envoyer un mail simple ou avec pièces jointes. # # Cette fonction est utilisée UNNIQUEMENT pour des adresses GMAIL!!! # # ########################################################## # def NouvGMAIL(Exp, Pass, Dest, Objet, Corps, PJ) : """ Fonction qui envoi automatiquement un mail suite aux informations demandées.""" # Préparons le support de l'e-mail en convertissant en format MIME # le corps du mail lu depuis le programme principal. MonCorpsEMail = MIMEText(Corps, _charset='utf8') # Préparons le support au texte ET au fichier MonEMail = MIMEMultipart() MonEMail.attach(MonCorpsEMail) # Si la variable pièce jointe contient quelque chose... if PJ!= '' : # Ouvrons le fichier qui contient la pièce jointe en mode lecture/binaire. MonFichier = PJ Fichier = open(monfichier, 'rb') # Définissons un type par défaut. CType = 'application/octet-stream' TypePrincipal, SousType, = CType.split('/', 1) print ('.', end='') # Préparons l'utilisation du fichier. MonFichierJoint = MIMEBase(TypePrincipal, SousType) MonFichierJoint.set_payload(Fichier.read()) Fichier.close() MonFichierJoint.add_header('Content_Disposition', 'attachment', filename = MonFichier) encoders.encode_base64(monfichierjoint) print ('.\n') print ('Encodage de la pièce jointe terminée.\n') MonEMail.attach(MonFichierJoint) 18

# C'est à partir de là que tout se joue. # Il est nécessaire de mettre un port, (587), pour envoyer un mail avec une adresse GMAIL. # Sans ce port et les informations qui suivent, jamais vous ne pourriez envoyer un mail. smtpserver = smtplib.smtp("smtp.gmail.com",587) smtpserver.ehlo() smtpserver.starttls() smtpserver.ehlo smtpserver.login(exp, Pass) header = 'To:' + Dest + '\n' + 'From: ' + Exp + '\n' + Objet + '\n' print (header) Corps = header + Corps # Maintenant que l'e-mail est prêt, envoyons-le par les commandes SMTP # puis send_mail (de la bibliothèque smtplib) # en utilisant notre serveur (perso) d'envoi de mail de notre boîte perso. smtpserver.sendmail(exp, Dest, Corps) # Ne pas oublier de QUITTER LE SERVEUR une fois le mail expédié! smtpserver.close() MessageFin = 'Envoi d\'e-mail terminé.' return MessageFin OUF, ça y est, vous en êtes arrivé à la fin. Il y a quand même beaucoup de commentaires. Si on les retire, le premier script ne ferait que neufs lignes et le second ne feraient qu une centaine de lignes. De plus ce script est universel, c'est-à-dire qu il s adapte à toutes les situations, (adresses e-mail différentes), il faut juste lui fournir les informations nécessaires et il fait le reste. Maintenant, analysons le un peu plus en détails. On va commencer par le script principal. Tout d abord il y a les modules. Le premier module, (getpass), permet de masquer le mot de passe qui sera demandé un peu plus tard. Puis le second module est en fait la bibliothèque, (FonctionMail.py), que l on a créée. Nous parlerons de cette bibliothèque juste après. Une fois les modules importés, on passe à l affichage du texte de bienvenue puis on crée cinq variables qui nous servirons par la suite. Ensuite, on utilise une condition «IF» qui est liée à la dernière variable «Question». Cette condition permet de demander le chemin de la pièce jointe et de la contenir dans une variable «PJ». Donc si la condition est vraie, on utilise cette variable «PJ» pour contenir le chemin, sinon on ne met rien dedans et on passe à la suite. C est à ce moment que l on va utiliser une méthode qui va permettre à notre script d être universel. On va utiliser la méthode «partition». Vous vous rappelez, nous en avons parlé au début du cours. Elle permet de séparer une chaîne de caractères. Nous utilisons cette méthode afin de découper l adresse e-mail de l expéditeur et de la placer dans la variable «Decoupage1». 19

Ensuite on met dans une autre variable, «Decoupage2», le groupe de mots qui nous intéressent, à savoir le serveur SMTP. Qu est ce qu un serveur SMTP? SMTP ou Simple Mail Transfer Protocol est un protocole de communication utilisé pour transférer le courrier électronique vers des serveurs de messagerie électronique. Exemple : smtp.orange.fr Une fois que l on a récupéré la partie de l adresse e-mail qui nous intéresse, on utilise une autre condition «IF». Cette condition est utilisée pour savoir si la variable «Decoupage2» contient le groupe de mots «gmail.com». Si c est le cas, on va demander le mot de passe du compte de l expéditeur, (c est là que le module getpass entre en jeu, il va masquer le mot de passe). Puis on appelle la fonction «NouvGMAIL(Exp, MDP, Dest, Objet, Corps, PJ)» que l on a créée dans la bibliothèque «FonctionMail.py». ATTENTION : le mot de passe sera masqué uniquement si vous lancez votre script principal en double cliquant dessus. Autrement, si «gmail.com» n est pas trouvé, on utilise la fonction «NouvMail(Exp, Dest, Objet, Corps, PJ)», également créée dans la bibliothèque «FonctionMail.py». Pourquoi utiliser une autre fonction pour une adresse GMAIL? Il faut savoir que certains serveurs SMTP sont sécurisés et d autres non. Les serveurs GMAIL sont sécurisés et donc si on ne fournit pas de mot de passe, on ne pourra jamais envoyer de mails. C est là que ça devient inquiétant!!! En effet, si certains serveurs SMTP ne sont pas sécurisés, quels risques peut-il y avoir? Si une personne malveillante connaît votre adresse e-mail, (pas GMAIL), elle peut envoyer des mails à n importe qui en se faisant passer pour vous. Elle n aura pas besoin de fournir de mot de passe. J ai testé ceci avec l adresse e-mail de mon maître de stage. Je m en suis envoyé une tripotée en me faisant passer pour lui et cela a fonctionné parfaitement!!! Mais revenons à nos mouton. Une fois que le script à choisit la fonction appropriée, il affiche un message de confirmation à l utilisateur. Passons à présent à la bibliothèque «FonctionMail.py», (second script). Nous allons apprendre de nouvelles choses ici. Effectivement, la première chose que l on peut remarquer, c est dans le premier commentaire. Il y a écrit en gros «!!! BIBLIOTHEQUE!!!». A quoi sert une bibliothèque? Une bibliothèque est un ensemble de fonctions utilisées par le script principal. Il est préférable d utiliser une bibliothèque lorsque notre script atteint des lignes de codes astronomiques. Cela permet d y voir plus. 20

Ensuite, il y a de nouveaux modules qui ont été importés. Vous vous en douté, sûrement, ils permettent au script principal et à la bibliothèque, de fonctionner correctement. Le premier module, «smtplib», est un peu le maître de tous les autre : c est le module principal. Jamais le script ne pourra fonctionner s il n y a pas au moins ce module d importé. Les deux modules suivants sont utilisés pour l encodage. Les deux derniers sont utilisés pour manipuler les fichiers au format MIME. Qu est ce que le format MIME? Le format MIME ou Multipurpose Internet Mail Extensions est un standard qui permet d'étendre les possibilités du courrier électronique, c'est-à-dire de permettre d'insérer des documents (images, sons, texte,...) dans un courrier. Passons maintenant à la première fonction. Ceci est un élément nouveau, nous n avions encore jamais parlé de fonctions au début du cours. Quel est le rôle d une fonction? Une fonction est un sous-programme qui permet d'effectuer un ensemble d'instructions. Elle peut être utilisée autant de fois que l on souhaite, et on l appelle généralement dans le script principal. Tout d abord, comment on crée une fonction en Python? On utilise l instruction «def NomFonction() :» On peut mettre dans les parenthèses, des variables, provenant du script principal, que l on souhaite utiliser dans notre fonction. Si l on regarde notre première fonction «def NouvMail(Exp, Dest, Objet, Corps, PJ):», on peut voir qu il y a un nom et des variables dans les parenthèses qui proviennent du script principal. Elément de syntaxe, important il ne faut pas oublier de mettre les «:» à la fin de la parenthèse, il en est de même pour les conditions «IF», «ELIF», «ELSE», «WHILE», «try», «except»,... Puis on peut commencer à écrire les instructions que la fonction devra exécuter. ATTENTION : Il ne faut pas oublier la tabulation avant de commencer à écrire vos instructions. Si c est le cas, le script ne saura pas où commencent et où s arrêtent vos instructions. Tiens, tiens, quel est ce texte de couleur vert, qui est situé au début de la fonction? Il s agit d un commentaire. Vous vous souvenez, on utilise ce type de commentaire afin d expliquer le rôle de la fonction. Il s agit d un commentaire de documentation. Continuons avec les instructions de la première fonction. Là, on commence à rentrer dans des lignes de codes plus complexes. Donc, nous allons commencer par la condition «IF», elle permet de tester si la variable «PJ» contient un chemin ou non. La variable «PJ» est utilisée dans le script principal, elle permet de demander à l utilisateur s il souhaite ou non envoyer une pièce jointe. 21

Si la condition «IF» est valide, c'est-à-dire que la variable contient quelque chose, alors on exécute les instructions qui se trouvent à l intérieur. Ces instructions sont les suivantes : D abord on ouvre le fichier pour le lire en mode lecture par bit puis on définit un type par défaut. A quoi sa sert de définir un type par défaut? Il est nécessaire de définir un type par défaut car on ne sait pas encore de quoi est fait le fichier, s il est codé ou non. Donc on défini un type par défaut afin que le script puisse continuer. Jusqu ici, il n y a rien de bien compliqué. Ensuite, il faut préparer le script à l utilisation du fichier. Ah, là ça commence à devenir plus dur. Mais qu est ce que c est que toute cette ligne incompréhensible. Il y a un «MIMEBase()», un «set_playload()», un add_header()», un «encode.base64()» et un attach(). Bon ne vous inquiétez pas, on va s en sortir. On va commencer par le «encode.base64()». Le rôle de cette méthode est d encoder le contenu de la pièce jointe en base64. Puis le «attach()». Cette méthode permet d attacher la pièce jointe au reste de l e-mail. Le «add_header()», permet d ajouter un en-tête, c'est-à-dire les informations au sujet de l expéditeur, du destinataire, Les deux autres méthodes «MIMEBase()», «set_playload()» sont liées et sont obligatoires!!! Pour en finir avec cette fonction, nous devons renseigner toutes les informations basiques d un e- mail, (Subject, From, To), puis on utilise la variable «Decoupage2» qui contient le serveur SMTP pour le concaténer à la variable «Serveur». La variable «Serveur» contient le texte «smtp» et la variable «Decoupage2» contient le serveur SMTP. Ca y est nous pouvons enfin envoyer notre e-mail. Pour cela, on utilise les commandes suivantes : «ServeurSMTP = smtplib.smtp(serveur)» «ServeurSMTP.send_message(MonEMail)» «ServeurSMTP.quit()» «return MessageFin» La première commande sert à se connecter grâce au serveur SMTP, la seconde commande envoie l email, la troisième commande sert à quitter le serveur MAIS le return à quoi sert-il? A quoi sert un «return» dans une fonction? L'instruction return termine une fonction en renvoyant une valeur. Si un return ne contient aucune expression en argument, alors il termine la fonction. Dans notre fonction le «return» renvoie comme valeur le texte contenu dans la variable «MessageFin». 22

A présent, nous allons en terminer par la dernière fonction «NouvGMAIL(Exp, Pass, Dest, Objet, Corps, PJ)». Tout ce que vous devez savoir sur cette fonction, c est qu elle est utilisée UNIQUEMENT pour des adresses e-mail «GMAIL». Rien ne change au niveau des lignes de codes pour le début du script, cependant la fin n a rien à voir. En effet, en plus de fournir le mot de passe pour envoyer un mail avec une adresse «GMAIL», les commandes pour préparer et envoyer l e-mail ne sont pas du tout pareilles. Tout d abord, il est obligatoire de renseigner le port «587» dans la méthode «SMTP()». Dans notre fonction : «smtplib.smtp( smtp.gmail.com,587)» Ensuite, il y a trois autres méthodes qui sont : «ehlo()», «starttls()» et «ehlo» Ces méthodes sont obligatoires car le serveur «GMAIL» exige le transport crypté. Après il y a la méthode «login()» que l on utilise pour le login et le mot de passe de l expéditeur. Le login étant l adresse e-mail de l expéditeur et le mot de passe, celui que l expéditeur à fournit dans la variable «Pass». Pour finir on renseigne les informations basiques d un e-mail et on l envoie en utilisant la méthode «sendmail()» et non «send_message()». On n oublie pas de quitter le serveur et de retourner une valeur si on en a l utilité. Et voilà, vous venez de créer un script composé de deux parties : - Un script principal. - Une bibliothèque contenant deux fonctions utilisées dans le script principal. ATTENTION : Le script que vous venez de créer est à utiliser UNIQUEMENT dans un but éducatif et non malveillant. Je vous ai parlé un peu plus haut du risque qu il pouvait y avoir avec ce genre de script, donc faite attention!!! 23

Chapitre 5 : Suppléments. Commandes systèmes. Dans cette partie, je souhaite vous faire part d une chose qui, pour moi, me parait intéressant et que j utilise pratiquement tout le temps dans mes scripts Python. Il s agit des commandes systèmes. Sachez qu il est tout à fait possible d utiliser les commandes systèmes de l invite de commande de Windows. Commandes systèmes et invites de commandes, mais qu est ce que c est? Il faut savoir qu avant que le premier système d exploitation Windows apparaisse, un système appelé MS-DOS à été mis en place. MS-DOS est un environnement tout en ligne de commandes. On copie, colle, coupe des fichiers ou des dossiers en tapant des lignes de commandes,... Des années ont passé et le système MS-DOS a été remplacé par le système d exploitation Windows. Il s agit du système d exploitation que tout le monde utilise aujourd hui. Cependant Windows contient des restes du système MS-DOS. Il s agit de l invite de commande. Il permet de retrouver l interface en ligne de commande et donc de pouvoir utiliser des commandes systèmes (copy, rem, ping, cd, ). Bon, je vais arrêter là avec mes explications et je vais vous apprendre comment utiliser ces commandes systèmes. Regardons tout de suite le script suivant : # ##################################### # # Script pour utiliser des commandes systèmes. # # ##################################### # # Importation du module os pour les commandes systèmes. import os # Effectuer un "ping" vers une adresse IP. os.system( ping 192.168.156.4 ) Il s agit ici d un script très simple. En effet, on effectue tout simplement un «ping» vers une adresse IP. Qu est ce qu un «ping»? Un «ping» est une commande système qui permet d interroger un ordinateur distant afin de savoir s il est présent sur le réseau. Cette commande utilise des paquets de données qu elle envoie à l ordinateur distant et mesure le temps de réponse. Envoie du «ping» vers la machine B Réponse de la machine B vers la machine A 24

A partir de ce script vous pouvez effectuer n importe quelle commande systèmes. Lancer le pour voir ce que ça donne. Vous pouvez constater que le script nous ouvre automatiquement une invite de commande et affiche le résultat du «ping». Maintenant nous allons voir quelque chose d encore mieux. Nous allons récupérer ce qui provient du «ping» pour le mettre dans un fichier texte. Regardons tout de suite le script suivant : # ##################################### # # Script pour utiliser des commandes systèmes. # # ##################################### # # Importation du module os pour les commandes systèmes. import os # Effectuer un "ping" vers une adresse IP. os.system('ping 192.168.156.4 >> "C:\\Documents and Settings\\All Users\\test.txt"') Bon, on peut voir qu il n y a pas grand chose qui change. Il n y a que deux éléments nouveaux. Le premier est «>>», cet élément s appelle une redirection. Une redirection permet, comme son nom l indique, de rediriger tout ce qui provient d une instruction vers un fichier texte. Dans le script ci-dessus, on redirige tout ce qui provient du «ping» dans un fichier texte «test.txt». La redirection est quelque chose de très utile et de très pratique. Le second élément est les guillemets. Il encadre le chemin vers le fichier «test.txt». Il est obligatoire de mettre ces guillemets lorsqu il y a des espaces dans le chemin. Le mieux est de les mettre tout le temps : au moins il n y aura pas de problème. Une fois que vous avez compris le système des redirections, vous pouvez utiliser n importe quelles commandes systèmes. Gestion des exceptions. Il serait intéressent dans un script, de pouvoir tester les erreurs. C est-à-dire, faire comme une phase de tests avant que le script continue plus loin dans ses instructions. Pour cela, il suffit d utiliser les trois instructions suivantes : try : except : else : Nous allons nous entraîner avec un des scripts que nous avons créés précédemment. Prenons le script «lire.py». Donc, ce que nous allons faire, c est dire au script de tester s il peut ouvrir le fichier en mode lecture : si c est bon il continue les instructions contenues dans le «else :» autrement il affiche un message d erreur. Nous allons utiliser le script suivant pour exécuter cette phase de test : 25

# ################################## # # Script pour lire un fichier DEJA existant!!! # # ################################## # # On tente d'ouvrir le fichier "MailSeul.txt" en mode lecture. try: # Création de la variable "MonFichier" qui contient le chemin du fichier cible. # Nous utilisons l'option "r" pour le lire. # Toutefois, cette option est mise par défaut. MonFichier = open('f:\\mailseul.txt', 'r') # Si le fichier ne peut pas être ouvert, on affiche un message d'erreur. except: print('chemin ou nom de fichier invalide!!!') # Autrement, si le "try:" à réussie à ouvrir le fichier texte, alors # on passe aux instructions suivantes. else: # Ensuite nous utilisons la variable "ContenuFichier" pour lire # le contenu du fichier. Nous utilisons pour cela la méthode "read()". ContenuFichier = MonFichier.read() # Ensuite on referme le fichier. MonFichier.close() # Si vous ne rajoutez par cette ligne, il n'y aura rien d'affiché dans la fenêtre. print(contenufichier) input('appuyer sur une touche pour continuer.') Donc, si on analyse un peu ce script, on peut voir qu il y a bien trois étapes : 1) Le script tente d ouvrir, en mode lecture, le fichier texte. 2) Si le chemin n existe pas ou bien que le nom de fichier n est pas valide, le script affiche un message d erreur. 3) Autrement, si la 1 ère étape a bien fonctionné, c est-à-dire que le fichier à bien été ouvert, alors on continue la suite des instructions. Voilà, maintenant vous connaissez un bon moyen de faire des tests avant d aller plus loin dans l exécution de votre script. Je vous conseille d utiliser ces trois instructions le plus souvent possible car cela aide bien dans la gestion des erreurs. Création d un «.exe». Au début du cours, je vous avais parlé de la faiblesse du langage Python. Elle portait sur l incapacité à créer un «.exe». Effectivement, comme le langage Python est un langage interprété, il ne crée pas un exécutable du script automatiquement. Je vais donc vous apprendre à transformer votre script Python afin d obtenir un «.exe». 26

Tout d abord vous devez vous rendre à la page 36 afin d installer le logiciel nécessaire. Bien, maintenant que vous avez installé le logiciel, nous allons pouvoir commencer. Afin que l on puisse transformer notre script Python, un SETUP est nécessaire. Nous allons donc devoir créer un script supplémentaire et nous utiliserons le suivant : # ####################################### # # SETUP nécessaire pour transformer un script Python # # en ".exe". # # ####################################### # # Importation des modules. from cx_freeze import setup, Executable # Début du SETUP. setup( # Donner un nom au FUTUR logiciel. name = FTP, # Donner une version. version = 0.1, # Donner une description. description = utilitaire_reseau, # IMPORTANT : donner le chemin du script!!! executables = [Executable( C:\\Python32\\Scripts\\ftp.py )] ) Vous pouvez voir qu il est assez court. On commence par importer les modules nécessaires, puis on utilise la commande «setup()». A l intérieur de cette commande, nous devons renseigner des informations, (nom, versions, description), et surtout il ne faut pas oublier le chemin vers le script Python. Une fois le script terminé, vous devez l enregistrer sous le nom «setup.py». Maintenant, nous allons enfin pouvoir utiliser un des scripts que nous avons créé, le script FTP par exemple, afin de le transformer. Donc, la démarche est la suivante : 1) Copier le script «FTP.py», ainsi que le «setup.py», dans le dossier «Scripts» contenant le fichier «cxfreeze.bat». 2) Ensuite, ouvrez une invite de commande et rendez-vous dans le dossier «Scripts» : 27

Voici nos quatre fichiers. 3) Taper la commande suivante : «setup.py build» et appuyer sur ENTREE : Vous devriez voir apparaître tout un tas de lignes : 28

4) A présent, vous pouvez fermer l invite de commande. Retourner ensuite dans le dossier «Scripts», vous devriez y trouver un dossier appelé «build» (1). Si l on regarde à l intérieur, il y a également un autre dossier appelé «exe.win-amd64-3.2» (2) et dans ce dossier ce trouve l exécutable (3) : 1 2 3 Et voilà, notre exécutable Maintenant, si vous souhaiter donner votre logiciel à quelqu un et que le logiciel Python n est pas installé sur son ordinateur, vous devez lui fournir le fichier «python32.dll». Ce fichier est situé dans le même dossier que votre «.exe». 29

Le langage de programmation Python est moderne et en constante évolution. Les différentes versions utilisées pour créer des scripts, sont gratuites. Ce langage est riche en fonctionnalités. Sachez que le langage de programmation Python permet de faire de nombreuses choses, d une façon assez impressionnante. Dans mon cours, vous n avez vu qu une infime partie de ce que l on peut faire. J ai sélectionné, uniquement, ce qui me paraissait intéresaent et dont vous avez besoin si vous souhaiter vous expérimenter. J espère que ce cours vous à aider à mieux comprendre le langage de programmation Python. N hésitez pas à aller sur le site : http://www.python.org/. Il y a de nombreuses informations sur les conventions de codages, les modules existants. Il y a également des exemples, des questions/réponses Lorsque l on crée un script Python il faut : - mettre des commentaires de documentations pour les fonctions et des commentaires de développement pour expliquer le fonctionnement de chaque ligne du code. - utiliser des fonctions avant que le script n atteigne un nombre de lignes astronomiques. - bien faire attention aux conventions de codages, (syntaxe, tabulations, ) - s éclater et libérer son imagination. Sources. Sites Internet : - http://www.python.org/ - http://www.siteduzero.com/tutoriel-3-223267-apprenez-a-programmer-en-python.html - JPython : http://opikanoba.org/java/java-et-python - SCAPY : http://www.secdev.org/projects/scapy/doc/installation.html#windows Remerciements. Merci à Mr JACOB pour nous avoir appris toutes les richesses de Python. Merci à OUACHAIN Benoît pour le script d envoie d emails automatisé. 30

Fiche de procédure _ Installation du logiciel Python Afin que puissiez créer un script Python, il faut que vous ayez installé au préalable le logiciel Python. Suivez les étapes qui suivent pour réaliser cette opération. Installation du logiciel Python 3.2.3. 1 ère étape : Copier l adresse suivante dans un navigateur puis taper sur ENTREE. Normalement une fenêtre apparaît vous demandant si vous souhaitez enregistrer le fichier d installation ou si vous souhaitez annuler l opération. Evidemment, nous allons enregistrer le fichier. http://www.python.org/ftp/python/3.2.3/python-3.2.3.msi 2 ème étape : Une fois que vous l avez enregistré, double-cliquer dessus. Tout d abord, il est possible qu une fenêtre d avertissement apparaisse vous demandant si vous voulez vraiment lancer l installation. Cliquer sur le bouton «Exécuter». 31

3 ème étape : On peut, maintenant, commencer l installation. En premier lieu, on vous demande si vous souhaiter installer ce logiciel afin que tout le monde puisse l utiliser sur l ordinateur ou bien, si vous souhaiter l installer uniquement pour vous. ATTTENTION : Il est impossible de l installer, uniquement pour vous, sur un système Windows Vista. Cependant, une fois que vous avez sélectionné votre choix, cliquer sur le bouton «Next». 4 ème étape : Vous devez ensuite choisir le chemin vers lequel le logiciel sera installé. Installer le directement sur le disque «C:\». Comme ce chemin est sélectionné par défaut, vous avez juste à cliquer sur le bouton «Next». 32

5 ème étape : La fenêtre vous donne le choix des composants de Python 3 que vous souhaitez installer. Si votre espace disque est particulièrement faible, vous pouvez exclure certains composants. Register Extensions (enregistrer les extensions) vous permet de lancer les scripts Python (les fichiers).py) en les double-cliquant. Recommandé, mais pas obligatoire (cette option ne consomme aucun espace disque, il n'y a donc pas de raison de la désélectionner). Tcl/Tk est la bibliothèque graphique utilisée par l'environnement Python, que vous utiliserez tout au long de ce livre. Fortement recommandé. Documentation installe un fichier d'aide contenant la majeure partie de docs.python.org. Recommandé si votre connexion Internet est limitée. Utility Scripts comprend le script 2to3.py, nécessaire si vous voulez apprendre à migrer du code Python 2 code vers Python 3. Si vous n'avez aucun programme Python 2 à porter, vous pouvez désélectionner cette option. Test Suite regroupe les scripts utilisés pour tester l'interpréteur Python. Pour nous, il n y a rien à changer, laisser tout par défaut et cliquer sur le bouton «Next». Lorsque vous aurez cliqué sur «Next», une barre de chargement va apparaître afin d installer les composants. Il vous faut patienter quelques minutes 33

6 ème étape : Voilà, l installation est terminée. Il ne vous reste plus qu à cliquer sur «Finish». Découvrir le logiciel. Tout d abord, vous devez ouvrir le dossier qui contient le logiciel. Pour cela, cliquer sur «Poste de travail», puis allez sur le disque «C:\». Vous devriez avoir un dossier appelé «Python32», ouvrez-le. A l intérieur, vous pouvez voir différents dossiers, (DLLs, Doc, Include, Libs, ). Le dossier, le plus intéressant pour nous, est le «Lib». C est celui qui contient toutes les bibliothèques additionnelles nécessaires pour faire fonctionner vos scripts python. Cependant, il est très rare que l on intervienne dedans. Ensuite, il y a plusieurs fichiers textes, qui nous fournissent des informations sur la licence, les nouveautés et qui nous donnent des explications au sujet du logiciel. Il y a également des «.dll», nécessaires pour faire fonctionner le logiciel. Il y a un fichier «.dll» qui est très important pour nous, il s agit du fichier «Python32.dll». Je vous expliquerais dans la suite du cours à quoi il nous servira. Et pour finir, il y a des «.exe» mais nous n utiliserons aucun de cela. Maintenant, nous allons aller voir dans le menu «Démarrer», «Tous les programmes» et normalement vous devriez avoir un dossier «Python32». Cliquer dessus et, là encore, vous devriez avoir plusieurs fichiers : 34

Nous allons nous intéresser seulement aux deux fichiers signalés par les flèches violettes. Le premier fichier «IDLE (Python GUI» est l interface du logiciel Python, que nous utiliserons pour la partie pratique du cours. C est un peu comme un «Shell», on peut exécuter toutes les commandes en rapport avec Python et ce «Shell» est également utilisé lorsqu on lance un script. Le second fichier «Python (Command line)» sert, également à entrer des commandes liées à Python. Cependant c est une interface qui ressemble un peu à une invite de commande. L inconvénient de cette interface, c est qu il n y aucune couleur contrairement à «IDLE (Python GUI) qui, lui, utilise des couleurs syntaxiques. IDLE (Python GUI) Python (command line) Maintenant, vous pouvez commencer la partie pratique du cours, (P.5), afin de prendre en main l environnement «IDLE (Python GUI)». 35

Fiche de procédure _ Installation du logiciel cx_freeze Afin que puissiez transformer vos scripts Python en «.exe», il faut que vous ayez installé au préalable le logiciel cx_freeze. Suivez les étapes qui suivent pour réaliser cette opération. Installation du logiciel cx_freeze 4.2.3.. 1 ère étape : Copier l adresse suivante dans un navigateur puis taper sur ENTREE. Normalement une fenêtre apparaît vous demandant si vous souhaitez enregistrer le fichier d installation ou si vous souhaitez annuler l opération. Evidemment, nous allons enregistrer le fichier. http://prdownloads.sourceforge.net/cx-freeze/cx_freeze-4.2.3.win32-py3.2.msi?download 2 ème étape : Une fois que vous l avez enregistré, double-cliquer dessus. Tout d abord, il est possible qu une fenêtre d avertissement apparaisse vous demandant si vous voulez vraiment lancer l installation. Cliquer sur le bouton «Exécuter». 36

3 ème étape : On peut, maintenant, commencer l installation. En premier lieu, on vous demande si vous souhaiter installer ce logiciel afin que tout le monde puisse l utiliser sur l ordinateur ou bien, si vous souhaiter l installer uniquement pour vous. Une fois que vous avez sélectionné votre choix, cliquer sur le bouton «Next». 4 ème étape : Vous pouvez voir qu il y a une croix rouge dans le carré (1). Si vous cliquer dessus, vous aurez la possibilité d installer le logiciel où vous le souhaiter. CEPENDANT nous, nous l installerons dans le dossier «Python32» donc il n y a rien à modifier. Il vous suffit donc de cliquer sur «Next» : 1 37

5 ème étape : Ensuite, une barre de chargement va apparaître, il vous faut attendre quelques minutes. 6 ème étape : Et voilà, l installation du logiciel est terminé. Il ne vous reste plus qu à cliquer sur «Finish». A présent nous allons voir ce que le logiciel nous a installé. 38

Découvrir le logiciel. Normalement, si tout s est bien passé, le logiciel devrait être installé dans le dossier «Python32». Allons voir ça tout de suite. Commencer par ouvrir le dossier «Python32», situé sur le disque dur «C:\». On peut voir que le logiciel a créé un dossier supplémentaire appelé «Scripts» : A l intérieur de ce dossier, il y a deux fichiers. Le premier est un fichier utilisé par le logiciel et le second est un «.bat». Nous allons donc apprendre à l utiliser et pour cela rendez-vous à la page 25. 39