Python

De drev
Aller à : navigation, rechercher

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