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) ===== |