Table des matières

Python

Python est un langage de programmation doté d'une syntaxe concise et rigoureuse forte appréciée dans l'apprentissage d'un langage.

Décomposer les différents éléments d'une URL

Python est capable de décomposer les différents éléments qui constitue une URL. Nous allons prendre comme exemple : https://api.github.com/repos/shazow/urllib3

Sous un session interactive (python3) en « important » le module urllib.parse (ce module est présent en standard) :

>>> import urllib.parse
>>> url = 'https://api.github.com/repos/shazow/urllib3'
>>> p = urllib.parse.urlparse(url)
>>> p
ParseResult(scheme='https', netloc='api.github.com', path='/repos/shazow/urllib3', params='', query='', fragment='')
>>> print(p.netloc)
api.github.com
>>>

Cette fois-ci avec le module urllib3.util.url. Il vous faudra installer le paquet urllib3 1).

>> import urllib3.util
>>> url = 'https://api.github.com/repos/shazow/urllib3'
>>> p = urllib3.util.url.parse_url(url)
>>> p
Url(scheme='https', auth=None, host='api.github.com', port=None, path='/repos/shazow/urllib3', query=None, fragment=None)
>>> print(p.host)
api.github.com
>>>

On retrouve les différents éléments

Les sockets UNIX

Les sockets UNIX utilisent le système de fichiers pour communiquer entre deux processus. On parle de client / serveur.

Ci-dessous un exemple de serveur (dans une session interactive).

>>> import os
>>> import socket
>>> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
>>> sock_file = os.path.join('/tmp/', 'socket_01')
>>> s.bind(sock_file)
>>> s.listen(1)
>>> conn, addr = s.accept()

À ce niveau là, nous n'avons plus la « main », il faut connecter un client.

>>> import os
>>> import socket
>>> s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
>>> socket_file = os.path.join('/tmp/', 'socket_01')
>>> s.connect(socket_file)

Nous avons de nouveau la « main » sur le serveur. On continue le programme.

 >>> while True:
...     data = conn.recv(1024)
...     if data:
...             print data
...

Avec le client, nous pouvons envoyer des données.

>>> s.send('!system=DEVFS subsystem=CDEV type=MEDIACHANGE cdev=cd0')
54
>>> 

Sur le serveur, une ligne apparaît.

!system=DEVFS subsystem=CDEV type=MEDIACHANGE cdev=cd0

Pour mettre fin à la session, sur le client

>>> s.close()

Fin de ligne

Lorsque l'on doit écrire plusieurs lignes dans un fichier, il faut penser aux retours à la ligne. Ils sont interprétés de manières différentes suivant le système d'exploitation.

Cependant on peut utiliser la chaîne de caractères os.linesep, qui va traduire les fin de ligne en fonction du système d'exploitation, dans lequel le code sera exécuter.

>>> import codecs
>>> import os
>>> filename = 'fichier.txt'
>>> with codecs.open(filename, 'w', 'utf-8') as f:
...      f.write(u'Première ligne%s' % os.linesep)
...      f.write(u'Deuxième ligne%s' % os.linesep)
... 
>>> f.close()
>>> 

Ce qui donne ceci :

$ cat fichier.txt
Première ligne
Deuxième ligne
$
1)
Ce module est incorporé directement dans Requests