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 15:57] 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 26: | Ligne 56: | ||
| ==== Tests ==== | ==== Tests ==== | ||
| - | On teste si l'utilisateur est root | + | On teste si l'utilsateur est root : |
| - | ^Bash^Python<sup>Note</sup> | | + | ^Bash^Python<sup>Note</sup> | |
| - | |<code> | + | | <code> |
| if [ `id -u` = 0 ] | if [ `id -u` = 0 ] | ||
| then | then | ||
| echo "Attention vous êtes root!" | echo "Attention vous êtes root!" | ||
| fi | fi | ||
| - | </code>|<code> | + | </code> | <code> |
| import os | import os | ||
| current_user = os.popen('id -u').readlines() | current_user = os.popen('id -u').readlines() | ||
| current_user = _ | current_user = _ | ||
| - | if (current_user ==0): | + | if (current_user == 0): |
| print("Attention vous êtes root!") | print("Attention vous êtes root!") | ||
| - | </code>| | + | </code> | |
| - | + | ||
| - | Note: on verra plus loin qu'on peut avantageusement remplacer le module <font inherit/Courier New,Courier,monospace;;inherit;;inherit>os</font> par <font inherit/Courier New,Courier,monospace;;inherit;;inherit>subprocess</font> pour executer des programmes externes... | + | |
| + | <sup>Note</sup> : on verra par la suite qu'on peut avantageusement remplacer le module os par subprocess… | ||
| ==== Fonctions ==== | ==== Fonctions ==== | ||
| ^Bash^Python (avec une f-strings s'il vous plait!)<sup>Note</sup> | | ^Bash^Python (avec une f-strings s'il vous plait!)<sup>Note</sup> | | ||
| - | |<code> | + | | <code> |
| function processus() { | function processus() { | ||
| echo "Il s'agit du process $1" | echo "Il s'agit du process $1" | ||
| } | } | ||
| - | </code> | + | </code> | <code> |
| - | + | ||
| - | | + | |
| - | |<code> | + | |
| def processus(pid): | def processus(pid): | ||
| print(f"Il s'agit du process {pid}") | print(f"Il s'agit du process {pid}") | ||
| - | </code> | + | </code> | |
| - | + | ||
| - | | + | |
| - | | | + | |
| <sup>Note</sup> : Python peut également prendre en paramètres un nombre arbitraire d'arguments, soit sous forme de tuple | <sup>Note</sup> : Python peut également prendre en paramètres un nombre arbitraire d'arguments, soit sous forme de tuple | ||
| Ligne 72: | 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) ===== | ||