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 $