Python
Sommaire
Hello World
#!/usr/bin/env python3 def main(): print ("Hello World!") if __name__ == '__main__': main()
condition
if
Syntaxe de base
if 42 == 42: print("ok")
valeur multiple
Avec in pour éviter les conditions à rallonge avec des or
>>> "42" in ("1" "2" "3") False >>> "42" in ("1" "42" "3") True
Fichier
Ecriture dans un fichier
with open('output.txt', 'w') as file: file.write("output")
Arguments en ligne de commande
argparse
est fournis de base avec python
import argparse #parse command line arguments parser = argparse.ArgumentParser(description='Change ILCD content') parser.add_argument('--file', '-f', action='store', help='Input file') parser.add_argument('--dir', '-d', action='store', help='Input directory') parser.add_argument('--action', '-a', default=False, action='store_true', help='I am a boolean') args = parser.parse_args() print(args.file) print(args.dir) print(args.action)
❯ python test_argpar.py -f "A" -d "B" -a A B True
kwargs
Keyword arguments
def main(**kwargs): for key in kwargs: print ("%s: %s" % (key, kwargs[key])) if __name__ == '__main__': main(name='zak')
types
List
my_list = []
Classes
Définir
class MyClass: def f(self): return 'hello world'
Instancier
instance = MyClass()
Heritage
- Syntaxe
class Child (Mother):
- Appeller le constructeur mère:
super().__init__()
Sources
https://docs.python.org/3/tutorial/classes.html
conversion
int vers string
str
exemple :
rep = 42 print "la reponse est " + str(rep)
numpy / scipy
import numpy as np import scipy.sparse as sps row = np.array([0, 0, 1, 1]) col = np.array([0, 1, 0, 1]) data = np.array([1, 2, 3, 4]) A = sps.coo_matrix((data, (row, col)), shape=(2, 2)).tocsc() print A.toarray()
[[1 2] [3 4]]
XML / HTML
Il existe plusieurs bibliothèques pour le XML
ElementTree XML
import sys import xml.etree.ElementTree as ET if len(sys.argv) == 1: sys.exit('Missing argument filename') filename = sys.argv[1] root = ET.parse(filename).getroot() entries = root.find('entry') for entry in entries: UUID = entry.attrib['uuid'] name = entry.find('name').text print(UUID, name)
lxml
API similaire a ElementTree
J'utilise cette bibliothèque pour la modification de XML.
beautifulsoup soup
Permet de parser du HTML (correction de formatage)
Pip
Manager de paquets.
Pour python3, on utilise l’exécutable pip3
Options :
- install
- uninstall
- list
Mettre a jour un paquet
Utiliser l'option install avec -U
install <Nom du paquet> -U
exemple:
sudo pip install you-get -U
Installer une version specific / downgrade
pip install <Nom du paquet> == <Version a installer>
exemple:
sudo pip install setuptools==19.2
Creer un executable
kivy
voir kivy
PyInstaller
pip install pyinstaller
pyinstaller -F --name "KivyTest" --onefile main.py
Bug connu
En cas d'erreur six is required il faut downgrader setuptools
sudo pip install setuptools==19.2
CX freeze
Usage
Creation d'un script setup setup.py avec cxfreeze-quickstart
Le script de setup est un fichier python qui se charge des dependances (un peu comme un fichier Makefile). Le script de setup liste puis copie dans ./build/exe[ARCH][OS] tout les fichiers necessaire au fichier exe
Pour construire, passer l'argument "build"
python setup.py build
sous windows, cx_freeze est installé sous le répertoire d'installation de python dans le répertoire Scripts.
voir http://cx-freeze.readthedocs.org/en/latest/distutils.html
source
site http://cx-freeze.sourceforge.net/ doc http://cx-freeze.readthedocs.org/en/latest/index.html
Changer de version de python temporairement
Avec virtualenv
virtualenv -p /usr/bin/python2.7 --distribute temp-python source temp-python/bin/activate
désactiver avec
deactivate