Serveur d'impression

Bibliothèque standard Python – Wikipedia – Bien choisir son serveur d impression

Le 4 mai 2019 - 18 minutes de lecture

Une bibliothèque standard riche est l’un des avantages du langage de programmation Python. Il existe des outils pour travailler avec de nombreux protocoles réseau et formats Internet, par exemple des modules pour écrire des serveurs et des clients HTTP, pour analyser et créer des courriers électroniques, pour travailler avec XML, etc. Un ensemble de modules pour travailler avec le système d'exploitation vous permet écrire des applications multiplateformes. Il existe des modules permettant de travailler avec des expressions régulières, des encodages de texte, des formats multimédia, des protocoles cryptographiques, des archives, la sérialisation de données, la prise en charge du test unitaire, etc.

Module système[[[[régner | éditer le code]

Ce module contient des fonctions et des constantes pour interagir avec l'interpréteur Python. Ce module, y compris, contient les variables suivantes:

  • argv – arguments en ligne de commande,
  • byteorder – l'ordre des octets de la plate-forme, & # 39; peu & # 39; ou & # 39; grand & # 39;,
  • drapeaux – un objet qui fournit sous la forme d'attributs des informations sur les indicateurs donnés à l'interpréteur. Par exemple, sys.flags.debug parle de mode débogage,
  • maxint – nombre entier maximum,
  • Plate-forme – l'identifiant de la plateforme, par exemple, & # 39; linux-i386 & # 39 ;,
  • stdin, stdout, stderr – entrée standard, sortie et sortie d'erreur,
  • version – ligne avec version

autre.

Le module contient également plusieurs fonctions.[1].

Module contextuel[[[[régner | éditer le code]

Le module contient des fonctions de support pour le support opérateur. avec[2][3].

Exemple d'utilisation gestionnaire de contexteoù le fichier ouvert est automatiquement fermé:

avec ouvrir(Myfile.dat & # 39;, & # 39; wb & # 39;) comme fh:
    fh.écrire(& # 39; Mes détails & # 39;)

Dans l'exemple ci-dessus, un gestionnaire de contexte intégré à Python a été utilisé. L'API du gestionnaire de contexte comprend deux méthodes:

  • Méthode __entrer__ appelé en entrant dans le bloc avec. Retourne l'objet qui reçoit le paramètre spécifié par comme,
  • Méthode __sortie__ appelé lorsque le contrôle quitte le bloc avec.

Module contextlib propose un décorateur pour créer un gestionnaire de contexte basé sur le générateur:

de contextlib importation gestionnaire de contexte
@contextmanager
def mon_context():
    essayer:
        rendement ma valeur  # valeur pour as
    sauf Myerror, e:
        # gestion des exceptions
    enfin:
        # exécuté avec aucun résultat

Module abc[[[[régner | éditer le code]

Le module définit la métaclasse ABCMeta et décorateurs méthode abstraite et propriété abstraite définir de nouvelles classes de base abstraites (eng. classe de base abstraite)[4]. Il convient de noter que la classe de base abstraite est comprise ici dans un sens différent de celui de C ++.[5].

La bibliothèque standard étend la gamme des types de données Python disponibles.[6]. Il existe des types de données distincts pour la date et l'heure, le tableau, le tas, la file d'attente, les références faibles et les types de base abstraits du module collections.

Module datetime[[[[régner | éditer le code]

Le module datetime fournit cinq classes: date (rendez-vous amoureux), temps (temps), la combinaison de date et heure (date / heure), la différence de dates et d'heures (timedelta) et le fuseau horaire (tzinfo)[7].

L'exemple suivant imprime une instance. date / heurequi fixe la date et l'heure au moment de l'appel de la méthode à présent ():

>>> importation date / heure
>>> date / heure.date / heure.à présent()
date / heure.date / heure(2013, cinq, Onze, dix-neuf, 47, 25, 375511)

Module Collections[[[[régner | éditer le code]

Ce module comprend un ensemble de types de données spéciaux – des conteneurs qui complètent les types standard intégrés. dict, liste, ensemble et tuple. Par exemple pour Python 2.7: OrdreDict – dictionnaire ordonné (dans l'ordre d'ajout d'éléments), defaultdict – un dictionnaire qui appelle une fonction donnée pour un élément qui n'y est pas, Compteur – un dictionnaire pratique à utiliser pour compter les mots, Deque – liste doublement liée nommétuple – un tuple avec la possibilité d'accéder aux éléments par noms d'attributs. Il existe également des classes de base abstraites. Conteneur, séquence, ensemble, cartographie autre[8][9].

Un exemple montrant comment travailler avec un deck:

>>> de collections importation deque
>>>  = deque(& # 39; 123 & # 39;)
>>> [[[[un]
& # 39; 2 & # 39;
>>> .pop()
& # 39; 3 & # 39;
>>> .appendice arrière(& # 39; 0 & # 39;)
>>> liste()
[[[[& # 39; 0 & # 39;, & # 39; un & # 39;, & # 39; 2 & # 39;]

Exemple de tuple nommé pour un point dans un espace tridimensionnel:

>>> de collections importation nommétuple
>>> Point = nommétuple(& # 39; Point & # 39;, [[[[& # 39; x & # 39;, & # 39; y & # 39;, & # 39; z & # 39;])  # Définir le point de classe
>>> une = Point(1,0, 2.0, 3.0)  # Instance de point
>>> une.X + une.y + une.z  # Accès par attributs
6.0
>>> une  # Cela ressemble à l'impression
Point(X=1,0, y=2.0, z=3.0)
>>> une + (4.0, 5.0)  # Fonctionne comme un tuple
(1,0, 2.0, 3.0, 4.0, 5.0)

En Python 3.3, une classe est apparue Carte de la chaînequi vous permet de créer des dictionnaires imbriqués[10].

Exemple dans lequel la recherche d'une valeur par clé est effectuée dans un ordre donné dans plusieurs dictionnaires:

>>> local_cfg = & # 39; a & # 39;: quatre
>>> user_cfg = & # 39; a & # 39;: cinq
>>> system_cfg = & # 39; a & # 39;: cinq, & # 39; b & # 39;: Dix
>>> cm = Carte de la chaîne(local_cfg, user_cfg, system_cfg)
>>> cm[[[[& # 39; a & # 39;], cm[[[[& # 39; b & # 39;]
(quatre, Dix)
>>> local_cfg[[[[& # 39; b & # 39;] = Dix
>>> cm[[[[& # 39; a & # 39;], cm[[[[& # 39; b & # 39;]
(quatre, Dix)

Module Os[[[[régner | éditer le code]

Le module fournit les fonctions d’une interface portable aux principaux services du système d’exploitation; il définit certaines variables (par exemple, environ pour accéder aux variables d'environnement)[11].

Module Os.path[[[[régner | éditer le code]

Le module est utilisé pour manipuler les chemins de fichiers sur une plate-forme indépendante du type. Un exemple illustre l'utilisation de certaines fonctions du module:

>>> importation os.path
>>> os.chemin.joindre("/ tmp / 1", "temp.file")  # concaténation de chemins
& # 39; /tmp/1/temp.file'
>>> os.chemin.nom de répertoire("/tmp/1/temp.file")  # nom du répertoire donné un chemin complet
& # 39; / tmp / 1 & # 39;
>>> os.chemin.nom de base("/tmp/1/temp.file")  # nom de fichier pour le chemin complet donné
& # 39; temp.file & # 39;
>>> os.chemin.normpath("/tmp//2/../1/temp.file")  # normalisation de chemin 
& # 39; /tmp/1/temp.file'
>>> os.chemin.existe("/tmp/1/temp.file")  # y a-t-il un moyen?
Faux

La bibliothèque standard contient plusieurs modules permettant de travailler avec des chaînes et du traitement de texte, ainsi que les fonctionnalités suivantes.[12].

Constantes et fonctions utiles du module chaîne[[[[régner | éditer le code]

Le module contient diverses constantes pouvant être utilisées dans le traitement de texte, par exemple:
ascii_letters (une chaîne contenant toutes les lettres du jeu ASCII), ascii_lowercase, digits (une chaîne avec des nombres de 0 à 9), des lettres (lettres, en fonction du paramètre régional), etc.

>>> de chaîne importation ascii_letters, ascii_lowercase, ascii_uppercase, chiffres
>>> ascii_letters
& # 39; abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ & # 39;
>>> ascii_lowercase
Abcdefghijklmnopqrstuvwxyz & # 39;
>>> ascii_uppercase
& # 39; ABCDEFGHIJKLMNOPQRSTUVWXYZ & # 39;
>>> chiffres
0123456789 & # 39;

Créer un mot de passe:

>>> caractères = ascii_letters + chiffres
>>> de au hasard importation choix
>>> n = huit                            # longueur du mot de passe
>>> & # 39; & # 39;.joindre(choix(caractères) pour _ dans intervalle(n))
& # 39; ia1KGm2t & # 39;

Pour simplifier la substitution de chaîne par mot clé, des instances de classe peuvent être utilisées. Modèle. L'exemple illustre les méthodes remplacer et safe_substitute:

>>> de chaîne importation Modèle
>>> tpl = Modèle("" "$ name a $ montant $$. oh" "")
>>> tpl.remplacer("montant": 100, "prénom": "John")
& # 39; John a 100 $. Oh & # 39;
>>> tpl.safe_substitute("montant": 100)
$ Name a 100 €. Oh & # 39;
>>> # Pour la comparaison de syntaxe, la méthode de formatage d'une chaîne: 
>>> "" "name a montant $. oh" "".format(**"montant": 100, "prénom": "John")
& # 39; John a 100 $. Oh & # 39;

Support des expressions régulières: re module[[[[régner | éditer le code]

Les expressions régulières sont un puissant outil de traitement de texte. Le module re contient des fonctions à remplacer (sous), fractionnement de ligne (Divisé), en comparant une chaîne avec un motif (rencontre, chercher), chercher (chercheur, Trouver tout) et définit les classes de l'expression régulière compilée et le résultat de la comparaison. Exemple:

>>> importation 
>>> compiled_re = .compiler(r"[a-b][0-9]* ")
>>> [[[[m.groupe(0) pour m dans compiled_re.chercheur("A1 c123 a12, b abc (b987).")]
[[[[& # 39; a12 & # 39;, & # 39; b & # 39;, & # 39; a & # 39;, & # 39; b & # 39;, & # 39; b987 & # 39;]

Travailler avec des structures d'octets dans le module struct[[[[régner | éditer le code]

Le module struct est utilisé pour convertir les données à partir de chaînes d'octets et de types de données du langage Python et peut être utilisé lorsque vous travaillez avec des formats de fichiers binaires et des protocoles de communication.
Les fonctions pack et déballer vous permettent de «compresser» et de «décompresser» des données en fonction d'une chaîne de formatage composée de leurs codes de formatage, par exemple:

>>> de struct importation pack, déballer
>>> pack(& # 39; hh & # 39;, un, 2)  # h - code entier court avec signe
& # 39; x01  x00  x02  x00& # 39;
>>> déballer(& # 39; bbbb & # 39;, & # 39; ABCD & # 39;)  # b correspond à un caractère signé
(65, 66, 67, 68)

L'ordre des octets des données multi-octets peut être spécifié dans la chaîne de format, par exemple:

>>> pack(& # 39 ;! l & # 39;, 1025)  # réseau (du plus vieux au plus jeune, big-endian)
& # 39; x00  x00  x04  x01& # 39;
>>> pack(& # 39;> l & # 39;, 1025)  # de senior à junior, big-endian
& # 39; x00  x00  x04  x01& # 39;
>>> pack(& # 39; <l & # 39;, 1025)  # de junior à senior, little-endian
& # 39; x01  x04  x00  x00& # 39;

Le module définit également la classe. Structdont les méthodes correspondent aux fonctions du module.

CSV[[[[régner | éditer le code]

Un module est conçu pour lire et écrire un fichier CSV. CSV.
Ce module est conçu pour fonctionner avec différents dialectes: un séparateur de virgule, un séparateur de point-virgule, un délimiteur de tabulation (Excel).
L'exemple le plus simple est:

importation CSV
lecteur = CSV.lecteur(ouvrir("some.csv", "rb"))
pour rangée dans lecteur:
    impression rangée

Le module vous permet de personnaliser le format des fichiers lisibles et inscriptibles. Par exemple, vous pouvez définir le séparateur de champ :délimiteur de ligne – |symbole de citation – ` (au lieu " défaut).

un importation CSV
2 
3 avec ouvrir("some.csv", "wb") comme csv_fh:
quatre     écrivain = CSV.écrivain(csv_fh, délimiteur=& # 39;: & # 39;, citant=CSV.QUOTE_MINIMAL, quotechar=& # 39; & # 39; & # 39;, linererminator=& # 39; | & # 39;)
cinq     écrivain.écrivains([[[[
6                       [[[[1997, "Gué",  "E350", "ac, abs, lune", "3000.00"],
7                       [[[[1999, "Chevy", "Venture` Extended Edition`", "", "4900.00"],
huit                       [[[[1996, "Jeep",  "Grand Cherokee", "air, toit ouvrant, chargé DOIT VENDRE!", "4799.00"] 
9                     ])

Travailler avec des archives de fichiers[[[[régner | éditer le code]

La bibliothèque standard prend en charge plusieurs formats d'archives sous la forme des modules suivants: bz2 (bzip2), gzip (gzip), tarfile (le goudron) fichier zip (zip), ainsi que des liaisons à la bibliothèque zlib en tant que module zlib[13].

Exemples pour Python 2.7 et 3.2[[[[régner | éditer le code]

Dans l'exemple suivant, le fichier file.txt contenant le texte «texte dans le fichier» sera archivé dans le fichier archive.zip. Ceci est un autre exemple d'utilisation du gestionnaire de contexte.

de fichier zip importation Fichier zip
avec Fichier zip(Archive.zip & # 39;, & # 39; w & # 39;) comme ziparc:
     ziparc.écrivain(& # 39; fichier.txt & # 39;, & # 39; texte dans le fichier & # 39;)

La lecture des archives est similaire. L'exemple suivant imprime les noms de fichier contenus dans l'archive:

de fichier zip importation Fichier zip
avec Fichier zip(Archive.zip & # 39;, & # 39; r & # 39;) comme ziparc:
     pour fileinfo dans ziparc.liste de fichiers:
         impression(fileinfo.nom de fichier)

Fichiers de configuration[[[[régner | éditer le code]

Le module est conçu pour lire et écrire des fichiers de configuration. ConfigParser. Ce module est écrit en Python pur et est donc indépendant de la plate-forme. La syntaxe des fichiers de configuration est similaire à celle utilisée dans les fichiers Windows INI. Par exemple:

[My Section]



# quelques commentaires
foodir =% (dir) s / quel que soit
dir = frob
version: 1.0

En tant que clé de séparation, une valeur peut être utilisée "=" ou ":". Lorsque vous utilisez des cours ConfigParser et SafeConfigParser le remplacement de la chaîne a lieu % (<ключ>) s par valeur de paramètre <ключ>. Dans cet exemple, la valeur foodir sera égal frob / peu importe. Chaîne commençant par un personnage "#", est considéré comme un commentaire et est ignoré par les analyseurs.

Pour diverses raisons (y compris politiques – dans de nombreux pays, il est interdit de développer et de distribuer des logiciels de chiffrement sans l'autorisation des agences gouvernementales concernées), la prise en charge de la cryptographie dans la bibliothèque Python standard est limitée et se résume à des fonctions de hachage.

Dans la version 2.5, la structure de la crypto-bibliothèque était unifiée – toutes les fonctions de hachage sont assemblées dans un module. hashlib et supprimé les modules de chiffrement non cryptographiques inutiles.
Premiers modules md5, Hmac, sha déclaré obsolète et sera supprimé dans une version ultérieure.

Comme dans d’autres cas (DB-API, Python Web Server Gateway Interface), s’il est impossible (ou déraisonnable) d’inclure une prise en charge technologique complète dans la bibliothèque standard, des normes pour les interfaces fournies par des bibliothèques externes ont été adoptées – API pour les fonctions de hachage, API pour les chiffrements de bloc. Cependant, toutes les bibliothèques ne répondent pas à ces exigences (soit en raison de leur âge avancé – elles ont été créées avant l'écriture de CryptoAPI ou parce qu'elles sont générées automatiquement au-dessus des bibliothèques C correspondantes).

Utiliser des bibliothèques compatibles avec CryptoAPI est très simple:

 >>> importation hashlib
 >>> m = hashlib.Nouveau(& # 39; md5 & # 39;)      # créer un nouvel objet de hachage avec la fonction MD5
 >>> m = hashlib.md5()           soit si
 >>> m.mettre à jour("données de test")       # ajouter des données
 >>> m.digérer()
 & # 39; xebs: x00  xc0  xc9  xd36 xe6V x91  xa3z xb5B x93& # 39;
 >>> m.hexdigest()
 & # 39; e733a00c0c9d336e65691a37ab54293 & # 39;

hashlib prend en charge les fonctions de hachage suivantes: MD5, SHA-1, SHA224, SHA256, SHA384, SHA512 (dans les versions Python avec la bibliothèque OpenSSL incluse, cette liste est plus longue). Il convient de noter que la simple présence de l'algorithme dans la bibliothèque standard ne garantit pas sa fiabilité cryptographique. Ainsi, les algorithmes MD5 et SHA-1, au début de 2007, ne sont pas résistants à la cryptographie.

Pour le chiffrement, vous devez utiliser des bibliothèques tierces, par exemple pycrypto (correspond à CryptoAPI) ou M2Crypto (ne correspond pas à CryptoAPI). Une liste assez complète est présentée dans PyPI.[14].

La bibliothèque standard contient des modules permettant de travailler avec les protocoles réseau HTTP (le client et le serveur le plus simple), FTP, XML-RPC, SMTP, IMAP, NNTP et autres.

Recevoir un fichier via HTTP (HTTPS)[[[[régner | éditer le code]

Email[[[[régner | éditer le code]

Module smtplib[[[[régner | éditer le code]

Le module est conçu pour envoyer des courriers électroniques via le protocole SMTP.

importation smtplib

def send_email(texte):
    serveur = smtplib.SMTP("smtp.server", 587)  # connecter au serveur
    serveur.ehlo()
    serveur.débuts()
    serveur.s'identifier("s'identifier", "mot de passe")  Se connecter au serveur
    message = " r  n".joindre([[[[   # formulaire Email avec champs
        "De: de", 
        "To: to", 
        "Sujet: Sujet", 
        "", 
        texte,
        ])
    serveur.envoyer un mail("login @ server", "Adresse e-mail du destinataire", message)  # envoyer
    serveur.quitter()  se déconnecter du serveur

send_email(& # 39; Bonjour le monde! & # 39;)

Bases de données simples[[[[régner | éditer le code]

Python prend en charge l’accès aux fichiers au format DBM: Unix (n) dbm (module dbm en python 2.x ou dbm.ndbm dans Python 3), GNU DBM (module gdbm), un module écrit en Python pur, dumbdbm[15].

Travailler avec un objet de base de données est similaire à travailler avec un dictionnaire Python (par exemple dumbdbm)[16]:

>>> importation dumbdbm
>>>  = dumbdbm.ouvrir(& # 39; my.db & # 39;, & # 39; w & # 39;)  # fichier de base de données ouvert
>>> [[[[& # 39; clé & # 39;] = & # 39; valeur & # 39;              # attribuer une valeur par clé
>>> v = [[[[& # 39; clé & # 39;]                    # obtenir de la valeur par clé
>>> .synchroniser()                        changements d'enregistrement
>>> .Fermer()                       # fermer la base de données

Pour le stockage à long terme des objets Python, vous pouvez utiliser le module ranger (Rus "mettre sur l'étagère").

Sqlite[[[[régner | éditer le code]

SQLite est une base de données multiplateformes intégrée qui prend en charge un ensemble assez complet de commandes SQL et est disponible en codes sources (en C). À partir de Python 2.5, la bibliothèque sqlite3 vient avec un interprète Python.

Pour travailler avec la bibliothèque, vous devez créer un objet. Lien qui sert de base de données:

    un importation sqlite3
    2 Connecticut = sqlite3.relier(& # 39; exemple.db & # 39;)
    3 c = Connecticut.le curseur()
    quatre 
    cinq # Créer une table
    6 c.exécuter(& # 39; & # 39; Actions CREATE TABLE
    7                                                     (date, texte trans, texte du symbole, quantité réelle, prix réel) & # 39; & # 39; & # 39; & # 39;)
    huit 
    9 # Insérer une ligne
Dix c.exécuter("INSERT INTO stocks" (2006-01-05, "ACHETER", "RHAT", 100,35.14) ")
Onze 
12 # Enregistrer (et écrire) les modifications
13 Connecticut.commettre()
14 
15 # Après la fin des travaux, nous pouvons fermer la connexion avec DB
seize Connecticut.Fermer()

Support au développement logiciel[[[[régner | éditer le code]

Module filetage fournit une classe Filcorrespondant au fil, ainsi que des classes pour les objets de synchronisation, telles que: locks Fermer à clé et Rlock, Minuteursémaphores Sémaphore et Sémaphore Boundedvariable de condition Étatun événement un événement. En outre, pour la mise en file d'attente – FIFO, LIFO, la file d'attente prioritaire – le module est utilisé queue (Queue en python 2).

Python n'a pas les moyens de mettre fin ou de mettre en pause les threads, ni de libérer tous les verrous[17].

La présence dans l’implémentation principale du verrou d’interprète global Python (eng. Verrou d'interprète global, GIL) limite sérieusement l'utilité de l'informatique multithread dans le comptage des problèmes[18].

Le package Python standard comprend la bibliothèque graphique Tkinter.

  1. Beazley, 2009, p. 229-235.
  2. Ziadé, 2008, p. 56-60.
  3. Doug Hellman. contextlib – utilitaires de gestion de contexte (eng.). La date d'appel est le 30 août 2012. Archivé le 18 octobre 2012.
  4. Beazley, 2009, p. 257-259.
  5. Documentation Python v2.7, bibliothèque standard Python, services d'exécution Python, classes de base abstraites
  6. Types de données – Documentation Python 3
  7. Prokhorenok, 2011.
  8. Ziadé, 2008, p. 303-306.
  9. Beazley, 2009, p. 262-265.
  10. Documentation Python 3.3, bibliothèque standard Python, types de données
  11. Beazley, 2009, p. 378–396.
  12. Beazley, 2009, ch. seize.
  13. Beazley, 2009, p. 313–329.
  14. Modules cryptographiques dans le répertoire PyPI
  15. Documentation Python v2.7, bibliothèque standard Python, anydbm – Accès générique aux bases de données de style DBM
  16. Beazley, 2009, p. 310—311.
  17. Beazley, 2009, p. 436-444.
  18. Beazley, 2009, p. 444.
  • David M. Beazley. Référence essentielle de Python. – 4ème édition. – Addison-Wesley Professional, 2009. – 717 с. – ISBN 978-0672329784.
  • Doug Hellmann. La bibliothèque standard Python par exemple. – Addison-Wesley Professional, 2011. – 1344 с. – ISBN 978-0321767349.
  • Fredrik Lundh. Bibliothèque standard Python. – O & # 39; Reilly Media, 2001. – 281 с. – ISBN 978-0596000967.
  • Tarek Ziadé. Programmation Expert Python. – Packt Publishing Ltd., 2008. – 372 с. – ISBN 978-1-847194-94-7.
  • Прохоренок Н. А. Python. Самое необходимое .. – В-Петербург, 2011. – 416 с. – ISBN 978-5-9775-0614-4.


Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.