Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
python:python3_pour_asr [2018/01/05 12:38] herve ballans |
python:python3_pour_asr [2018/01/09 17:42] (Version actuelle) herve ballans |
||
|---|---|---|---|
| Ligne 3: | Ligne 3: | ||
| ====== Utiliser Python3 en Admin Systèmes et Réseaux ====== | ====== Utiliser Python3 en Admin Systèmes et Réseaux ====== | ||
| - | Note : les exemples sont testés avec iptyhon3 | + | Note : les exemples sont testés avec le programme //iptyhon3// (Python 3.6.3, IPython 5.1.0) |
| + | ===== En-tête de fichier ===== | ||
| + | |||
| + | Spécifie l'environnement ainsi que l'encodage utiliusé (utf-8) : | ||
| + | |||
| + | <code> | ||
| + | #!/usr/bin/env python3 | ||
| + | # -*- coding: utf8 -*- | ||
| + | </code> | ||
| + | |||
| + | ===== Documentation ===== | ||
| + | |||
| + | Grace aux docstrings, il est très facile (et recommandé!) de documenter son code : | ||
| + | |||
| + | <code> | ||
| + | def server(): | ||
| + | """Définit les caractéristiques du serveur""" | ||
| + | </code> | ||
| + | |||
| + | L'accès à la documentation peut se faire de 2 manières, soit par la fonction help() : | ||
| + | |||
| + | <code> | ||
| + | help(server) | ||
| + | </code> | ||
| + | |||
| + | soit avec l'attribut //__doc__// | ||
| + | <code> | ||
| + | server.__doc__ | ||
| + | </code> | ||
| ===== Bash vs Python3 ===== | ===== Bash vs Python3 ===== | ||
| + | |||
| + | Les exemples de cette section n'ont pas grand sens en soi, ils servent juste ici à illustrer la différence entre l'écriture de routines en bash et en Python. Ces bases serviront pour les sections suivantes. | ||
| ==== Boucles ==== | ==== Boucles ==== | ||
| Ligne 24: | Ligne 54: | ||
| </code> | | </code> | | ||
| + | ==== Tests ==== | ||
| + | |||
| + | On teste si l'utilsateur est root : | ||
| + | |||
| + | ^Bash^Python<sup>Note</sup> | | ||
| + | | <code> | ||
| + | if [ `id -u` = 0 ] | ||
| + | then | ||
| + | echo "Attention vous êtes root!" | ||
| + | fi | ||
| + | </code> | <code> | ||
| + | import os | ||
| + | current_user = os.popen('id -u').readlines() | ||
| + | current_user = _ | ||
| + | if (current_user == 0): | ||
| + | print("Attention vous êtes root!") | ||
| + | </code> | | ||
| + | |||
| + | <sup>Note</sup> : on verra par la suite qu'on peut avantageusement remplacer le module os par subprocess… | ||
| ==== Fonctions ==== | ==== Fonctions ==== | ||
| Ligne 46: | Ligne 95: | ||
| def processus(**kwargs) | def processus(**kwargs) | ||
| </code> | </code> | ||
| + | |||
| + | ===== Module os ===== | ||
| + | |||
| + | ce module contient plusieurs objets permettant d'intéragir avec le système | ||
| ===== Modules utiles (depuis des librairies standards) ===== | ===== Modules utiles (depuis des librairies standards) ===== | ||
| Ligne 134: | Ligne 187: | ||
| </code> | </code> | ||
| - | Note : sur la dernière ligne, il faut ajouter un <nowiki></nowiki> entre <font inherit/Courier New,Courier,monospace;;inherit;;inherit>%s</font> et <font inherit/Courier New,Courier,monospace;;inherit;;inherit>n</font> (mais ne s'affiche pas dans un code block de Dokuwiki) | + | Note : sur la dernière ligne, il faut ajouter un //backslash// entre <font inherit/Courier New,Courier,monospace;;inherit;;inherit>%s</font> et <font inherit/Courier New,Courier,monospace;;inherit;;inherit>n</font> (mais ne s'affiche pas dans Dokuwiki !) |
| Un exemple d'équivalent avec le module shlex pourrait être : | Un exemple d'équivalent avec le module shlex pourrait être : | ||