1
0
Fork 0
python-docs-fr/faq/library.po

1194 lines
52 KiB
Plaintext
Raw Normal View History

2018-07-04 09:06:45 +00:00
# Copyright (C) 2001-2018, Python Software Foundation
2018-07-04 09:08:42 +00:00
# For licence information, see README file.
2016-10-30 09:46:26 +00:00
#
msgid ""
msgstr ""
2019-12-05 22:15:54 +00:00
"Project-Id-Version: Python 3\n"
2016-10-30 09:46:26 +00:00
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2023-01-15 22:33+0100\n"
"PO-Revision-Date: 2023-03-27 18:03+0200\n"
"Last-Translator: Mathieu Dupuy\n"
2018-07-04 09:14:25 +00:00
"Language-Team: FRENCH <traductions@lists.afpy.org>\n"
2017-05-23 22:40:56 +00:00
"Language: fr\n"
2016-10-30 09:46:26 +00:00
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 3.2.2\n"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:5
2016-10-30 09:46:26 +00:00
msgid "Library and Extension FAQ"
msgstr "FAQ sur la bibliothèque et les extensions"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:8
2018-06-10 09:32:30 +00:00
msgid "Contents"
msgstr "Sommaire"
2018-06-10 09:32:30 +00:00
#: faq/library.rst:12
2016-10-30 09:46:26 +00:00
msgid "General Library Questions"
msgstr "Questions générales sur la bibliothèque"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:15
2016-10-30 09:46:26 +00:00
msgid "How do I find a module or application to perform task X?"
msgstr ""
"Comment trouver un module ou une application pour effectuer la tâche X ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:17
2016-10-30 09:46:26 +00:00
msgid ""
"Check :ref:`the Library Reference <library-index>` to see if there's a "
"relevant standard library module. (Eventually you'll learn what's in the "
"standard library and will be able to skip this step.)"
msgstr ""
2019-08-30 14:33:11 +00:00
"Regardez si la :ref:`bibliothèque standard <library-index>` contient un "
2020-12-02 15:17:42 +00:00
"module approprié (avec l'expérience, vous connaîtrez le contenu de la "
2019-08-30 14:33:11 +00:00
"bibliothèque standard et pourrez sauter cette étape)."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:21
2016-10-30 09:46:26 +00:00
msgid ""
"For third-party packages, search the `Python Package Index <https://pypi."
"org>`_ or try `Google <https://www.google.com>`_ or another web search "
2018-06-10 09:32:30 +00:00
"engine. Searching for \"Python\" plus a keyword or two for your topic of "
"interest will usually find something helpful."
2016-10-30 09:46:26 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour des paquets tiers, regardez dans `l'index des paquets Python <https://"
"pypi.org>`_ ou essayez `Google <https://www.google.com>`_ ou un autre moteur "
"de recherche (NDT : comme le moteur français `Qwant <https://www.qwant."
"com>`_). Rechercher « Python » accompagné d'un ou deux mots-clés se "
"rapportant à ce qui vous intéresse donne souvent de bons résultats."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:28
2016-10-30 09:46:26 +00:00
msgid "Where is the math.py (socket.py, regex.py, etc.) source file?"
2018-10-04 15:50:29 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"Où sont stockés les fichiers sources *math.py*, *socket.py*, *regex.py*, "
"etc ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:30
2016-10-30 09:46:26 +00:00
msgid ""
"If you can't find a source file for a module it may be a built-in or "
"dynamically loaded module implemented in C, C++ or other compiled language. "
"In this case you may not have the source file or it may be something like :"
"file:`mathmodule.c`, somewhere in a C source directory (not on the Python "
"Path)."
msgstr ""
2019-08-30 14:33:11 +00:00
"Si vous ne parvenez pas à trouver le fichier source d'un module, c'est peut-"
"être parce que celui-ci est un module natif ou bien un module implémenté en "
"C, C++, ou autre langage compilé, qui est chargé dynamiquement. Dans ce cas, "
"vous ne possédez peut-être pas le fichier source ou celui-ci est en réalité "
"stocké quelque part dans un dossier de fichiers source C (qui ne sera pas "
"dans le chemin Python), comme par exemple :file:`mathmodule.c`."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:35
2016-10-30 09:46:26 +00:00
msgid "There are (at least) three kinds of modules in Python:"
2019-08-30 14:33:11 +00:00
msgstr "Il y a (au moins) trois types de modules dans Python :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:37
2016-10-30 09:46:26 +00:00
msgid "modules written in Python (.py);"
2019-08-30 14:33:11 +00:00
msgstr "les modules écrits en Python (*.py*) ;"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:38
2016-10-30 09:46:26 +00:00
msgid ""
"modules written in C and dynamically loaded (.dll, .pyd, .so, .sl, etc);"
msgstr ""
2019-08-30 14:33:11 +00:00
"les modules écrits en C et chargés dynamiquement (*.dll*, *.pyd*, *.so*, *."
"sl*, *etc.*) ;"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:39
2016-10-30 09:46:26 +00:00
msgid ""
"modules written in C and linked with the interpreter; to get a list of "
"these, type::"
msgstr ""
"les modules écrits en C et liés à l'interpréteur ; pour obtenir leur liste, "
2019-08-30 14:33:11 +00:00
"entrez ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:47
2016-10-30 09:46:26 +00:00
msgid "How do I make a Python script executable on Unix?"
msgstr "Comment rendre un script Python exécutable sous Unix ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:49
2016-10-30 09:46:26 +00:00
msgid ""
"You need to do two things: the script file's mode must be executable and the "
"first line must begin with ``#!`` followed by the path of the Python "
"interpreter."
msgstr ""
2019-08-30 14:33:11 +00:00
"Deux conditions doivent être remplies : les droits d'accès au fichier "
"doivent permettre son exécution et la première ligne du script doit "
"commencer par ``#!`` suivi du chemin vers l'interpréteur Python."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:53
2016-10-30 09:46:26 +00:00
msgid ""
"The first is done by executing ``chmod +x scriptfile`` or perhaps ``chmod "
"755 scriptfile``."
msgstr ""
2019-08-30 14:33:11 +00:00
"La première condition est remplie en exécutant ``chmod +x scriptfile`` ou "
"``chmod 755 scriptfile``."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:56
2016-10-30 09:46:26 +00:00
msgid ""
"The second can be done in a number of ways. The most straightforward way is "
"to write ::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Il y a plusieurs façons de remplir la seconde. La plus simple consiste à "
"écrire au tout début du fichier ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:61
2016-10-30 09:46:26 +00:00
msgid ""
"as the very first line of your file, using the pathname for where the Python "
"interpreter is installed on your platform."
2019-08-30 14:33:11 +00:00
msgstr "en utilisant le chemin de l'interpréteur Python sur votre machine."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:64
2016-10-30 09:46:26 +00:00
msgid ""
"If you would like the script to be independent of where the Python "
"interpreter lives, you can use the :program:`env` program. Almost all Unix "
"variants support the following, assuming the Python interpreter is in a "
"directory on the user's :envvar:`PATH`::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour rendre ce script indépendant de la localisation de l'interpréteur "
"Python, il faut utiliser le programme :program:`env`. La ligne ci-dessous "
"fonctionne sur la quasi-totalité des dérivés de Unix, à condition que "
"l'interpréteur Python soit dans un dossier référencé dans la variable :"
"envvar:`PATH` de l'utilisateur ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:71
2016-10-30 09:46:26 +00:00
msgid ""
"*Don't* do this for CGI scripts. The :envvar:`PATH` variable for CGI "
"scripts is often very minimal, so you need to use the actual absolute "
"pathname of the interpreter."
msgstr ""
2019-08-30 14:33:11 +00:00
"Ne faites *pas* ceci pour des scripts CGI. La variable :envvar:`PATH` des "
"scripts CGI est souvent très succincte, il faut par conséquent préciser le "
"chemin absolu réel de l'interpréteur."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:75
2016-10-30 09:46:26 +00:00
msgid ""
"Occasionally, a user's environment is so full that the :program:`/usr/bin/"
"env` program fails; or there's no env program at all. In that case, you can "
2018-04-28 22:28:01 +00:00
"try the following hack (due to Alex Rezinsky):"
2016-10-30 09:46:26 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"Il peut arriver que l'environnement d'un utilisateur soit si chargé que le "
"programme :program:`/usr/bin/env` échoue ; ou que le programme *env* "
2019-08-30 14:33:11 +00:00
"n'existe pas du tout. Dans ce cas, vous pouvez utiliser l'astuce suivante, "
"élaborée par Alex Rezinsky :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:86
2016-10-30 09:46:26 +00:00
msgid ""
"The minor disadvantage is that this defines the script's __doc__ string. "
"However, you can fix that by adding ::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Le léger inconvénient est que cela définit la variable *__doc__* du script. "
"Cependant, il est possible de corriger cela en ajoutant ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:94
2016-10-30 09:46:26 +00:00
msgid "Is there a curses/termcap package for Python?"
msgstr "Existe-t-il un module *curses* ou *termcap* en Python ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:98
2016-10-30 09:46:26 +00:00
msgid ""
"For Unix variants: The standard Python source distribution comes with a "
"curses module in the :source:`Modules` subdirectory, though it's not "
"compiled by default. (Note that this is not available in the Windows "
"distribution -- there is no curses module for Windows.)"
msgstr ""
"Pour les dérivés d'Unix : la distribution standard de Python contient un "
2019-08-30 14:33:11 +00:00
"module *curses* dans le sous-dossier :source:`Modules`, bien qu'il ne soit "
"pas compilé par défaut. Il n'est pas disponible en Windows — le module "
"*curses* n'existant pas en Windows."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:103
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`curses` module supports basic curses features as well as many "
"additional functions from ncurses and SYSV curses such as colour, "
"alternative character set support, pads, and mouse support. This means the "
"module isn't compatible with operating systems that only have BSD curses, "
"but there don't seem to be any currently maintained OSes that fall into this "
"category."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`curses` comprend les fonctionnalités de base de *curses* et "
"beaucoup de fonctionnalités supplémentaires provenant de *ncurses* et de "
"*SYSV curses* comme la couleur, la gestion des ensembles de caractères "
"alternatifs, la prise en charge du pavé tactile et de la souris. Cela "
"implique que le module n'est pas compatible avec des systèmes d'exploitation "
"qui n'ont que le *curses* de BSD mais, de nos jours, de tels systèmes "
"d'exploitation ne semblent plus exister ou être maintenus."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:111
2016-10-30 09:46:26 +00:00
msgid "Is there an equivalent to C's onexit() in Python?"
msgstr "Existe-t-il un équivalent à la fonction C ``onexit()`` en Python ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:113
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`atexit` module provides a register function that is similar to "
"C's :c:func:`onexit`."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`atexit` fournit une fonction d'enregistrement similaire à la "
"fonction C :c:func:`onexit`."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:118
2016-10-30 09:46:26 +00:00
msgid "Why don't my signal handlers work?"
msgstr "Pourquoi mes gestionnaires de signaux ne fonctionnent-ils pas ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:120
2016-10-30 09:46:26 +00:00
msgid ""
"The most common problem is that the signal handler is declared with the "
"wrong argument list. It is called as ::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Le problème le plus courant est d'appeler le gestionnaire de signaux avec "
"les mauvais arguments. Un gestionnaire est appelé de la façon suivante ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:125
2020-07-20 08:56:42 +00:00
msgid "so it should be declared with two parameters::"
2019-08-30 14:33:11 +00:00
msgstr "donc il doit être déclaré avec deux paramètres ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:132
2016-10-30 09:46:26 +00:00
msgid "Common tasks"
2019-08-30 14:33:11 +00:00
msgstr "Tâches fréquentes"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:135
2016-10-30 09:46:26 +00:00
msgid "How do I test a Python program or component?"
msgstr "Comment tester un programme ou un composant Python ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:137
2016-10-30 09:46:26 +00:00
msgid ""
"Python comes with two testing frameworks. The :mod:`doctest` module finds "
"examples in the docstrings for a module and runs them, comparing the output "
"with the expected output given in the docstring."
msgstr ""
2019-08-30 14:33:11 +00:00
"Python fournit deux cadriciels de test. Le module :mod:`doctest` cherche des "
"exemples dans les *docstrings* d'un module et les exécute. Il compare alors "
"la sortie avec la sortie attendue, telle que définie dans la *docstring*."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:141
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`unittest` module is a fancier testing framework modelled on Java "
"and Smalltalk testing frameworks."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`unittest` est un cadriciel un peu plus élaboré basé sur les "
"cadriciels de test de Java et de Smalltalk."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:144
2016-10-30 09:46:26 +00:00
msgid ""
"To make testing easier, you should use good modular design in your program. "
"Your program should have almost all functionality encapsulated in either "
"functions or class methods -- and this sometimes has the surprising and "
"delightful effect of making the program run faster (because local variable "
"accesses are faster than global accesses). Furthermore the program should "
"avoid depending on mutating global variables, since this makes testing much "
"more difficult to do."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour rendre le test plus aisé, il est nécessaire de bien découper le code "
"d'un programme. Votre programme doit avoir la quasi-totalité des "
"fonctionnalités dans des fonctions ou des classes — et ceci a parfois "
"l'avantage aussi plaisant qu'inattendu de rendre le programme plus rapide, "
"les accès aux variables locales étant en effet plus rapides que les accès "
"aux variables globales. De plus le programme doit éviter au maximum de "
"manipuler des variables globales, car ceci rend le test beaucoup plus "
"difficile."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:152
2016-10-30 09:46:26 +00:00
msgid "The \"global main logic\" of your program may be as simple as ::"
msgstr ""
"La « logique générale » d'un programme devrait être aussi simple que ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:157
2016-10-30 09:46:26 +00:00
msgid "at the bottom of the main module of your program."
2019-08-30 14:33:11 +00:00
msgstr "à la fin du module principal du programme."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:159
2016-10-30 09:46:26 +00:00
msgid ""
2020-07-20 08:56:42 +00:00
"Once your program is organized as a tractable collection of function and "
"class behaviours, you should write test functions that exercise the "
2016-10-30 09:46:26 +00:00
"behaviours. A test suite that automates a sequence of tests can be "
"associated with each module. This sounds like a lot of work, but since "
"Python is so terse and flexible it's surprisingly easy. You can make coding "
"much more pleasant and fun by writing your test functions in parallel with "
"the \"production code\", since this makes it easy to find bugs and even "
"design flaws earlier."
msgstr ""
2019-08-30 14:33:11 +00:00
"Une fois que la logique du programme est implémentée par un ensemble de "
"fonctions et de comportements de classes, il faut écrire des fonctions de "
"test qui vont éprouver cette logique. À chaque module, il est possible "
"d'associer une suite de tests qui joue de manière automatique un ensemble de "
"tests. Au premier abord, il semble qu'il faille fournir un effort "
"conséquent, mais comme Python est un langage concis et flexible, c'est "
"surprenamment aisé. Écrire simultanément le code « de production » et les "
"fonctions de test associées rend le développement plus agréable et plus "
"amusant, car ceci permet de trouver des bogues, voire des défauts de "
"conception, plus facilement."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:167
2016-10-30 09:46:26 +00:00
msgid ""
"\"Support modules\" that are not intended to be the main module of a program "
"may include a self-test of the module. ::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Les « modules auxiliaires » qui n'ont pas vocation à être le module "
"principal du programme peuvent inclure un test pour se vérifier eux-mêmes. ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:173
2016-10-30 09:46:26 +00:00
msgid ""
"Even programs that interact with complex external interfaces may be tested "
"when the external interfaces are unavailable by using \"fake\" interfaces "
"implemented in Python."
msgstr ""
2019-08-30 14:33:11 +00:00
"Les programmes qui interagissent avec des interfaces externes complexes "
"peuvent être testés même quand ces interfaces ne sont pas disponibles, en "
"utilisant des interfaces « simulacres » implémentées en Python."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:179
2016-10-30 09:46:26 +00:00
msgid "How do I create documentation from doc strings?"
msgstr "Comment générer la documentation à partir des *docstrings* ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:181
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`pydoc` module can create HTML from the doc strings in your Python "
"source code. An alternative for creating API documentation purely from "
"docstrings is `epydoc <https://epydoc.sourceforge.net/>`_. `Sphinx <https://"
"www.sphinx-doc.org>`_ can also include docstring content."
2016-10-30 09:46:26 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`pydoc` peut générer du HTML à partir des *docstrings* du "
"code source Python. Il est aussi possible de documenter une API uniquement à "
"partir des *docstrings* à l'aide de `epydoc <https://epydoc.sourceforge.net/"
">`_. `Sphinx <https://sphinx-doc.org>`_ peut également inclure du contenu "
2019-08-30 14:33:11 +00:00
"provenant de *docstrings*."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:188
2016-10-30 09:46:26 +00:00
msgid "How do I get a single keypress at a time?"
msgstr "Comment détecter qu'une touche est pressée ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:190
2016-10-30 09:46:26 +00:00
msgid ""
"For Unix variants there are several solutions. It's straightforward to do "
"this using curses, but curses is a fairly large module to learn."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour les dérivés d'Unix, plusieurs solutions s'offrent à vous. C'est facile "
"en utilisant le module *curses*, mais *curses* est un module assez "
"conséquent à apprendre."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:234
2016-10-30 09:46:26 +00:00
msgid "Threads"
2019-08-30 14:33:11 +00:00
msgstr "Fils d'exécution"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:237
2016-10-30 09:46:26 +00:00
msgid "How do I program using threads?"
msgstr "Comment programmer avec des fils d'exécution ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:239
2016-10-30 09:46:26 +00:00
msgid ""
"Be sure to use the :mod:`threading` module and not the :mod:`_thread` "
"module. The :mod:`threading` module builds convenient abstractions on top of "
"the low-level primitives provided by the :mod:`_thread` module."
msgstr ""
2019-08-30 14:33:11 +00:00
"Veillez à bien utiliser le module :mod:`threading` et non le module :mod:"
"`_thread`. Le module :mod:`threading` fournit une abstraction plus facile à "
"manipuler que les primitives de bas-niveau du module :mod:`_thread`."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:245
2016-10-30 09:46:26 +00:00
msgid "None of my threads seem to run: why?"
msgstr "Aucun de mes fils ne semble s'exécuter : pourquoi ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:247
2016-10-30 09:46:26 +00:00
msgid ""
"As soon as the main thread exits, all threads are killed. Your main thread "
"is running too quickly, giving the threads no time to do any work."
msgstr ""
2019-08-30 14:33:11 +00:00
"Dès que le fil d'exécution principal se termine, tous les fils sont tués. Le "
"fil principal s'exécute trop rapidement, sans laisser le temps aux autres "
"fils de faire quoi que ce soit."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:250
2016-10-30 09:46:26 +00:00
msgid ""
"A simple fix is to add a sleep to the end of the program that's long enough "
"for all the threads to finish::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Une correction simple consiste à ajouter un temps d'attente suffisamment "
"long à la fin du programme pour que tous les fils puissent se terminer ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:265
2016-10-30 09:46:26 +00:00
msgid ""
"But now (on many platforms) the threads don't run in parallel, but appear to "
"run sequentially, one at a time! The reason is that the OS thread scheduler "
"doesn't start a new thread until the previous thread is blocked."
msgstr ""
2019-08-30 14:33:11 +00:00
"Mais à présent, sur beaucoup de plates-formes, les fils ne s'exécutent pas "
"en parallèle, mais semblent s'exécuter de manière séquentielle, l'un après "
"l'autre ! En réalité, l'ordonnanceur de fils du système d'exploitation ne "
2019-08-30 14:33:11 +00:00
"démarre pas de nouveau fil avant que le précédent ne soit bloqué."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:269
2016-10-30 09:46:26 +00:00
msgid "A simple fix is to add a tiny sleep to the start of the run function::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Une correction simple consiste à ajouter un petit temps d'attente au début "
"de la fonction ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:282
2016-10-30 09:46:26 +00:00
msgid ""
"Instead of trying to guess a good delay value for :func:`time.sleep`, it's "
"better to use some kind of semaphore mechanism. One idea is to use the :mod:"
"`queue` module to create a queue object, let each thread append a token to "
"the queue when it finishes, and let the main thread read as many tokens from "
"the queue as there are threads."
msgstr ""
2019-08-30 14:33:11 +00:00
"Au lieu d'essayer de trouver une bonne valeur d'attente pour la fonction :"
"func:`time.sleep`, il vaut mieux utiliser un mécanisme basé sur les "
"sémaphores. Une solution consiste à utiliser le module :mod:`queue` pour "
"créer un objet file, faire en sorte que chaque fil ajoute un jeton à la file "
"quand il se termine, et que le fil principal retire autant de jetons de la "
"file qu'il y a de fils."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:290
2016-10-30 09:46:26 +00:00
msgid "How do I parcel out work among a bunch of worker threads?"
msgstr ""
2019-08-30 14:33:11 +00:00
"Comment découper et répartir une tâche au sein d'un ensemble de fils "
"d'exécutions ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:292
2016-10-30 09:46:26 +00:00
msgid ""
2020-07-20 08:56:42 +00:00
"The easiest way is to use the :mod:`concurrent.futures` module, especially "
"the :mod:`~concurrent.futures.ThreadPoolExecutor` class."
2016-10-30 09:46:26 +00:00
msgstr ""
2020-12-02 15:17:42 +00:00
"La manière la plus simple est d'utiliser le module :mod:`concurrent."
2019-08-30 14:33:11 +00:00
"futures`, en particulier la classe :mod:`~concurrent.futures."
"ThreadPoolExecutor`."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:295
2016-10-30 09:46:26 +00:00
msgid ""
"Or, if you want fine control over the dispatching algorithm, you can write "
"your own logic manually. Use the :mod:`queue` module to create a queue "
"containing a list of jobs. The :class:`~queue.Queue` class maintains a list "
"of objects and has a ``.put(obj)`` method that adds items to the queue and a "
"``.get()`` method to return them. The class will take care of the locking "
"necessary to ensure that each job is handed out exactly once."
msgstr ""
2019-08-30 14:33:11 +00:00
"Ou bien, si vous désirez contrôler plus finement l'algorithme de "
"distribution, vous pouvez écrire votre propre logique « à la main ». "
"Utilisez le module :mod:`queue` pour créer une file de tâches ; la classe :"
"class:`~queue.Queue` gère une liste d'objets et a une méthode ``."
"put(objet)`` pour ajouter un élément à la file, et une méthode ``.get()`` "
"pour les récupérer. La classe s'occupe de gérer les verrous pour que chaque "
"tâche soit exécutée une et une seule fois."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:302
2016-10-30 09:46:26 +00:00
msgid "Here's a trivial example::"
2019-08-30 14:33:11 +00:00
msgstr "Voici un exemple trivial ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:340
2016-10-30 09:46:26 +00:00
msgid "When run, this will produce the following output:"
msgstr "Quand celui-ci est exécuté, il produit la sortie suivante :"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:358
2016-10-30 09:46:26 +00:00
msgid ""
"Consult the module's documentation for more details; the :class:`~queue."
"Queue` class provides a featureful interface."
msgstr ""
2019-08-30 14:33:11 +00:00
"Consultez la documentation du module pour plus de détails ; la classe :class:"
"`~queue.Queue` fournit une interface pleine de fonctionnalités."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:363
2016-10-30 09:46:26 +00:00
msgid "What kinds of global value mutation are thread-safe?"
msgstr ""
2019-08-30 14:33:11 +00:00
"Quels types de mutations sur des variables globales sont compatibles avec "
"les programmes à fils d'exécution multiples ? sécurisé ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:365
2016-10-30 09:46:26 +00:00
msgid ""
"A :term:`global interpreter lock` (GIL) is used internally to ensure that "
"only one thread runs in the Python VM at a time. In general, Python offers "
"to switch among threads only between bytecode instructions; how frequently "
"it switches can be set via :func:`sys.setswitchinterval`. Each bytecode "
"instruction and therefore all the C implementation code reached from each "
"instruction is therefore atomic from the point of view of a Python program."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le :term:`verrou global de l'interpréteur <global interpreter lock>` (GIL "
"pour *global interpreter lock*) est utilisé en interne pour s'assurer que la "
"machine virtuelle Python (MVP) n'exécute qu'un seul fil à la fois. De "
"manière générale, Python ne change de fil qu'entre les instructions du code "
"intermédiaire ; :func:`sys.setswitchinterval` permet de contrôler la "
2019-08-30 14:33:11 +00:00
"fréquence de bascule entre les fils. Chaque instruction du code "
"intermédiaire, et, par conséquent, tout le code C appelé par cette "
"instruction est donc atomique du point de vue d'un programme Python."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:372
2016-10-30 09:46:26 +00:00
msgid ""
"In theory, this means an exact accounting requires an exact understanding of "
"the PVM bytecode implementation. In practice, it means that operations on "
"shared variables of built-in data types (ints, lists, dicts, etc) that "
"\"look atomic\" really are."
msgstr ""
2019-08-30 14:33:11 +00:00
"En théorie, cela veut dire qu'un décompte exact nécessite une connaissance "
"parfaite de l'implémentation de la MVP. En pratique, cela veut dire que les "
"opérations sur des variables partagées de type natif (les entier, les "
"listes, les dictionnaires, etc.) qui « semblent atomiques » le sont "
2019-08-30 14:33:11 +00:00
"réellement."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:377
2016-10-30 09:46:26 +00:00
msgid ""
"For example, the following operations are all atomic (L, L1, L2 are lists, "
"D, D1, D2 are dicts, x, y are objects, i, j are ints)::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Par exemple, les opérations suivantes sont toutes atomiques (*L*, *L1* et "
"*L2* sont des listes, *D*, *D1* et *D2* sont des dictionnaires, *x* et *y* "
"sont des objets, *i* et *j* des entiers) ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:392
2016-10-30 09:46:26 +00:00
msgid "These aren't::"
2019-08-30 14:33:11 +00:00
msgstr "Les suivantes ne le sont pas ::"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:399
2016-10-30 09:46:26 +00:00
msgid ""
"Operations that replace other objects may invoke those other objects' :meth:"
"`__del__` method when their reference count reaches zero, and that can "
"affect things. This is especially true for the mass updates to dictionaries "
"and lists. When in doubt, use a mutex!"
msgstr ""
2019-08-30 14:33:11 +00:00
"Les opérations qui remplacent d'autres objets peuvent invoquer la méthode :"
"meth:`__del__` de ces objets quand leur compteur de référence passe à zéro, "
"et cela peut avoir de l'impact. C'est tout particulièrement vrai pour les "
"changements massifs sur des dictionnaires ou des listes. En cas de doute, il "
"vaut mieux utiliser un mutex !"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:406
2016-10-30 09:46:26 +00:00
msgid "Can't we get rid of the Global Interpreter Lock?"
msgstr "Pourquoi ne pas se débarrasser du verrou global de l'interpréteur ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:410
2016-10-30 09:46:26 +00:00
msgid ""
"The :term:`global interpreter lock` (GIL) is often seen as a hindrance to "
"Python's deployment on high-end multiprocessor server machines, because a "
"multi-threaded Python program effectively only uses one CPU, due to the "
"insistence that (almost) all Python code can only run while the GIL is held."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le :term:`verrou global de l'interpréteur <global interpreter lock>` (GIL) "
"est souvent vu comme un obstacle au déploiement de code Python sur des "
"serveurs puissants avec de nombreux processeurs, car un programme Python à "
"fils d'exécutions multiples n'utilise en réalité qu'un seul processeur. "
"Presque tout le code Python ne peut en effet être exécuté qu'avec le GIL "
"acquis."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:415
2016-10-30 09:46:26 +00:00
msgid ""
"Back in the days of Python 1.5, Greg Stein actually implemented a "
"comprehensive patch set (the \"free threading\" patches) that removed the "
"GIL and replaced it with fine-grained locking. Adam Olsen recently did a "
2018-06-28 13:32:56 +00:00
"similar experiment in his `python-safethread <https://code.google.com/"
"archive/p/python-safethread>`_ project. Unfortunately, both experiments "
"exhibited a sharp drop in single-thread performance (at least 30% slower), "
"due to the amount of fine-grained locking necessary to compensate for the "
"removal of the GIL."
2016-10-30 09:46:26 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"À l'époque de Python 1.5, Greg Stein a bien implémenté un ensemble complet "
"de correctifs (les correctifs « fils d'exécution libres ») qui remplaçaient "
"le GIL par des verrous plus granulaires. Adam Olsen a conduit une expérience "
"similaire dans son projet `python-safethread <https://code.google.com/"
"archive/p/python-safethread>`_. Malheureusement, ces deux tentatives ont "
"induit une baisse significative (d'au moins 30 %) des performances du code à "
2019-08-30 14:33:11 +00:00
"un seul fil d'exécution, à cause de la quantité de verrouillage plus "
"granulaire nécessaire pour contrebalancer la suppression du GIL."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:423
2016-10-30 09:46:26 +00:00
msgid ""
"This doesn't mean that you can't make good use of Python on multi-CPU "
"machines! You just have to be creative with dividing the work up between "
"multiple *processes* rather than multiple *threads*. The :class:"
"`~concurrent.futures.ProcessPoolExecutor` class in the new :mod:`concurrent."
"futures` module provides an easy way of doing so; the :mod:`multiprocessing` "
"module provides a lower-level API in case you want more control over "
"dispatching of tasks."
msgstr ""
2019-08-30 14:33:11 +00:00
"Cela ne signifie pas qu'il est impossible de tirer profit de Python sur des "
"machines à plusieurs cœurs ! Il faut seulement être malin et diviser le "
2019-08-30 14:33:11 +00:00
"travail à faire entre plusieurs *processus* plutôt qu'entre plusieurs *fils "
"d'exécution*. La classe :class:`~concurrent.futures.ProcessPoolExecutor` du "
"nouveau module :mod:`concurrent.futures` permet de faire cela facilement ; "
2019-08-30 14:33:11 +00:00
"le module :mod:`multiprocessing` fournit une API de plus bas-niveau pour un "
"meilleur contrôle sur la distribution des tâches."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:431
2016-10-30 09:46:26 +00:00
msgid ""
"Judicious use of C extensions will also help; if you use a C extension to "
"perform a time-consuming task, the extension can release the GIL while the "
"thread of execution is in the C code and allow other threads to get some "
"work done. Some standard library modules such as :mod:`zlib` and :mod:"
"`hashlib` already do this."
msgstr ""
2019-08-30 14:33:11 +00:00
"Des extensions C appropriées peuvent aussi aider ; en utilisant une "
"extension C pour effectuer une tâche longue, l'extension peut relâcher le "
"GIL pendant que le fil est en train d'exécuter ce code et laisser les autres "
"fils travailler. Des modules de la bibliothèque standard comme :mod:`zlib` "
"ou :mod:`hashlib` utilisent cette technique."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:437
2016-10-30 09:46:26 +00:00
msgid ""
"It has been suggested that the GIL should be a per-interpreter-state lock "
"rather than truly global; interpreters then wouldn't be able to share "
"objects. Unfortunately, this isn't likely to happen either. It would be a "
"tremendous amount of work, because many object implementations currently "
"have global state. For example, small integers and short strings are cached; "
"these caches would have to be moved to the interpreter state. Other object "
"types have their own free list; these free lists would have to be moved to "
"the interpreter state. And so on."
msgstr ""
2019-08-30 14:33:11 +00:00
"On a déjà proposé de restreindre le GIL par interpréteur, et non plus d'être "
2020-12-02 15:17:42 +00:00
"complètement global ; les interpréteurs ne seraient plus en mesure de "
2019-08-30 14:33:11 +00:00
"partager des objets. Malheureusement, cela n'a pas beaucoup de chance non "
"plus d'arriver. Cela nécessiterait un travail considérable, car la façon "
"dont beaucoup d'objets sont implémentés rend leur état global. Par exemple, "
"les entiers et les chaînes de caractères courts sont mis en cache ; ces "
"caches devraient être déplacés au niveau de l'interpréteur. D'autres objets "
"ont leur propre liste de suppression, ces listes devraient être déplacées au "
"niveau de l'interpréteur et ainsi de suite."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:446
2016-10-30 09:46:26 +00:00
msgid ""
"And I doubt that it can even be done in finite time, because the same "
"problem exists for 3rd party extensions. It is likely that 3rd party "
"extensions are being written at a faster rate than you can convert them to "
"store all their global state in the interpreter state."
msgstr ""
2019-08-30 14:33:11 +00:00
"C'est une tâche sans fin, car les extensions tierces ont le même problème, "
"et il est probable que les extensions tierces soient développées plus vite "
"qu'il ne soit possible de les corriger pour les faire stocker leur état au "
"niveau de l'interpréteur et non plus au niveau global."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:451
2016-10-30 09:46:26 +00:00
msgid ""
"And finally, once you have multiple interpreters not sharing any state, what "
"have you gained over running each interpreter in a separate process?"
msgstr ""
"Et enfin, quel intérêt y a-t-il à avoir plusieurs interpréteurs qui ne "
2019-08-30 14:33:11 +00:00
"partagent pas d'état, par rapport à faire tourner chaque interpréteur dans "
"un processus différent ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:456
2016-10-30 09:46:26 +00:00
msgid "Input and Output"
msgstr "Les entrées/sorties"
2022-03-23 17:40:12 +00:00
#: faq/library.rst:459
2016-10-30 09:46:26 +00:00
msgid "How do I delete a file? (And other file questions...)"
msgstr "Comment supprimer un fichier ? (et autres questions sur les fichiers…)"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:461
2016-10-30 09:46:26 +00:00
msgid ""
"Use ``os.remove(filename)`` or ``os.unlink(filename)``; for documentation, "
"see the :mod:`os` module. The two functions are identical; :func:`~os."
"unlink` is simply the name of the Unix system call for this function."
msgstr ""
2019-08-30 14:33:11 +00:00
"Utilisez ``os.remove(filename)`` ou ``os.unlink(filename)`` ; pour la "
"documentation, référez-vous au module :mod:`os`. Ces deux fonctions sont "
"identiques, :func:`~os.unlink` n'est tout simplement que le nom de l'appel "
"système à cette fonction sous Unix."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:465
2016-10-30 09:46:26 +00:00
msgid ""
"To remove a directory, use :func:`os.rmdir`; use :func:`os.mkdir` to create "
"one. ``os.makedirs(path)`` will create any intermediate directories in "
"``path`` that don't exist. ``os.removedirs(path)`` will remove intermediate "
"directories as long as they're empty; if you want to delete an entire "
"directory tree and its contents, use :func:`shutil.rmtree`."
msgstr ""
2019-08-30 14:33:11 +00:00
"Utilisez :func:`os.rmdir` pour supprimer un dossier et :func:`os.mkdir` pour "
"en créer un nouveau. ``os.makedirs(chemin)`` crée les dossiers "
"intermédiaires de ``chemin`` qui n'existent pas et ``os.removedirs(chemin)`` "
"supprime les dossiers intermédiaires si ceux-ci sont vides. Pour supprimer "
"une arborescence et tout son contenu, utilisez :func:`shutil.rmtree`."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:471
2016-10-30 09:46:26 +00:00
msgid "To rename a file, use ``os.rename(old_path, new_path)``."
msgstr ""
2019-08-30 14:33:11 +00:00
"``os.rename(ancien_chemin, nouveau_chemin)`` permet de renommer un fichier."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:473
2016-10-30 09:46:26 +00:00
msgid ""
"To truncate a file, open it using ``f = open(filename, \"rb+\")``, and use "
"``f.truncate(offset)``; offset defaults to the current seek position. "
"There's also ``os.ftruncate(fd, offset)`` for files opened with :func:`os."
"open`, where *fd* is the file descriptor (a small integer)."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour supprimer le contenu d'un fichier, ouvrez celui-ci avec ``f = "
"open(nom_du_fichier, \"rb+\")``, puis exécutez ``f.truncate(décalage)`` où "
"*décalage* est par défaut la position actuelle de la tête de lecture. Il "
"existe aussi ``os.ftruncate(df, décalage)`` pour les fichiers ouverts avec :"
"func:`os.open`, où *df* est le descripteur de fichier (un entier court)."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:478
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`shutil` module also contains a number of functions to work on "
"files including :func:`~shutil.copyfile`, :func:`~shutil.copytree`, and :"
"func:`~shutil.rmtree`."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`shutil` propose aussi un grand nombre de fonctions pour "
"effectuer des opérations sur des fichiers comme :func:`~shutil.copyfile`, :"
"func:`~shutil.copytree` et :func:`~shutil.rmtree`."
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:484
2016-10-30 09:46:26 +00:00
msgid "How do I copy a file?"
msgstr "Comment copier un fichier ?"
2016-10-30 09:46:26 +00:00
2022-03-23 17:40:12 +00:00
#: faq/library.rst:486
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. Note "
"that on Windows NTFS volumes, it does not copy `alternate data streams "
"<https://en.wikipedia.org/wiki/NTFS#Alternate_data_stream_(ADS)>`_ nor "
"`resource forks <https://en.wikipedia.org/wiki/Resource_fork>`__ on macOS "
"HFS+ volumes, though both are now rarely used. It also doesn't copy file "
"permissions and metadata, though using :func:`shutil.copy2` instead will "
"preserve most (though not all) of it."
2016-10-30 09:46:26 +00:00
msgstr ""
#: faq/library.rst:497
2016-10-30 09:46:26 +00:00
msgid "How do I read (or write) binary data?"
msgstr "Comment lire (ou écrire) des données binaires ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:499
2016-10-30 09:46:26 +00:00
msgid ""
"To read or write complex binary data formats, it's best to use the :mod:"
"`struct` module. It allows you to take a string containing binary data "
"(usually numbers) and convert it to Python objects; and vice versa."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour lire ou écrire des formats de données complexes en binaire, il est "
"recommandé d'utiliser le module :mod:`struct`. Celui-ci permet de convertir "
"une chaîne de caractères qui contient des données binaires, souvent des "
"nombres, en objets Python, et vice-versa."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:503
2016-10-30 09:46:26 +00:00
msgid ""
"For example, the following code reads two 2-byte integers and one 4-byte "
"integer in big-endian format from a file::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Par exemple, le code suivant lit, depuis un fichier, deux entiers codés sur "
"2 octets et un entier codé sur 4 octets, en format gros-boutiste ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:512
2016-10-30 09:46:26 +00:00
msgid ""
"The '>' in the format string forces big-endian data; the letter 'h' reads "
"one \"short integer\" (2 bytes), and 'l' reads one \"long integer\" (4 "
"bytes) from the string."
msgstr ""
2019-08-30 14:33:11 +00:00
"« > » dans la chaîne de formatage indique que la donnée doit être lue en "
"mode gros-boutiste, la lettre « h » indique un entier court (2 octets) et la "
"lettre « l » indique un entier long (4 octets)."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:516
2016-10-30 09:46:26 +00:00
msgid ""
"For data that is more regular (e.g. a homogeneous list of ints or floats), "
"you can also use the :mod:`array` module."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour une donnée plus régulière (p. ex. une liste homogène d'entiers ou de "
"nombres à virgule flottante), il est possible d'utiliser le module :mod:"
"`array`."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:521
2016-10-30 09:46:26 +00:00
msgid ""
"To read and write binary data, it is mandatory to open the file in binary "
"mode (here, passing ``\"rb\"`` to :func:`open`). If you use ``\"r\"`` "
"instead (the default), the file will be open in text mode and ``f.read()`` "
"will return :class:`str` objects rather than :class:`bytes` objects."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour lire et écrire de la donnée binaire, il est obligatoire d'ouvrir le "
"fichier en mode binaire également (ici, en passant ``\"rb\"`` à :func:"
"`open`). En utilisant ``\"r\"`` (valeur par défaut), le fichier est ouvert "
"en mode textuel et ``f.read()`` renvoie des objets :class:`str` au lieu "
"d'objets :class:`bytes`."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:529
2016-10-30 09:46:26 +00:00
msgid "I can't seem to use os.read() on a pipe created with os.popen(); why?"
msgstr ""
2019-08-30 14:33:11 +00:00
"Il me semble impossible d'utiliser ``os.read()`` sur un tube créé avec ``os."
"popen()`` ; pourquoi ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:531
2016-10-30 09:46:26 +00:00
msgid ""
":func:`os.read` is a low-level function which takes a file descriptor, a "
"small integer representing the opened file. :func:`os.popen` creates a high-"
"level file object, the same type returned by the built-in :func:`open` "
"function. Thus, to read *n* bytes from a pipe *p* created with :func:`os."
"popen`, you need to use ``p.read(n)``."
msgstr ""
2019-08-30 14:33:11 +00:00
":func:`os.read` est une fonction de bas niveau qui prend en paramètre un "
"descripteur de fichier — un entier court qui représente le fichier ouvert. :"
"func:`os.popen` crée un objet fichier de haut niveau, du même type que celui "
"renvoyé par la fonction native :func:`open`. Par conséquent, pour lire *n* "
"octets d'un tube *p* créé avec :func:`os.popen`, il faut utiliser ``p."
"read(n)``."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:618
2016-10-30 09:46:26 +00:00
msgid "How do I access the serial (RS232) port?"
msgstr "Comment accéder au port de transmission en série (RS-232) ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:620
msgid "For Win32, OSX, Linux, BSD, Jython, IronPython:"
msgstr "Pour Win32, OSX, Linux, BSD, Jython et IronPython :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:622
msgid "https://pypi.org/project/pyserial/"
msgstr "https://pypi.org/project/pyserial/"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:624
2016-10-30 09:46:26 +00:00
msgid "For Unix, see a Usenet post by Mitch Chapman:"
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour Unix, référez-vous à une publication sur Usenet de Mitch Chapman :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:626
2016-10-30 09:46:26 +00:00
msgid "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
2019-08-30 14:33:11 +00:00
msgstr "https://groups.google.com/groups?selm=34A04430.CF9@ohioee.com"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:630
2016-10-30 09:46:26 +00:00
msgid "Why doesn't closing sys.stdout (stdin, stderr) really close it?"
msgstr ""
2019-08-30 14:33:11 +00:00
"Pourquoi fermer *sys.stdout*, *sys.stdin*, *sys.stderr* ne les ferme pas "
"réellement ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:632
2016-10-30 09:46:26 +00:00
msgid ""
"Python :term:`file objects <file object>` are a high-level layer of "
"abstraction on low-level C file descriptors."
msgstr ""
2019-08-30 14:33:11 +00:00
"Les :term:`objets fichiers <file object>` en Python sont des abstractions de "
"haut niveau sur les descripteurs de fichier C de bas niveau."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:635
2016-10-30 09:46:26 +00:00
msgid ""
"For most file objects you create in Python via the built-in :func:`open` "
"function, ``f.close()`` marks the Python file object as being closed from "
"Python's point of view, and also arranges to close the underlying C file "
"descriptor. This also happens automatically in ``f``'s destructor, when "
"``f`` becomes garbage."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour la plupart des objets fichiers créés en Python avec la fonction native :"
"func:`open`, ``f.close()`` marque le fichier comme fermé du point de vue de "
"Python et ferme aussi le descripteur C sous-jacent. Le même mécanisme est "
"enclenché automatiquement dans le destructeur de ``f``, lorsque ``f`` est "
"recyclé."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:641
2016-10-30 09:46:26 +00:00
msgid ""
"But stdin, stdout and stderr are treated specially by Python, because of the "
"special status also given to them by C. Running ``sys.stdout.close()`` "
"marks the Python-level file object as being closed, but does *not* close the "
"associated C file descriptor."
msgstr ""
2019-08-30 14:33:11 +00:00
"Mais *stdin*, *stdout* et *stderr* ont droit à un traitement spécial en "
"Python, car leur statut en C est lui aussi spécial. Exécuter ``sys.stdout."
2019-08-30 14:33:11 +00:00
"close()`` marque l'objet fichier comme fermé du point de vue de Python, mais "
"le descripteur de fichier C associé n'est *pas* fermé."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:646
2016-10-30 09:46:26 +00:00
msgid ""
"To close the underlying C file descriptor for one of these three, you should "
"first be sure that's what you really want to do (e.g., you may confuse "
"extension modules trying to do I/O). If it is, use :func:`os.close`::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour fermer le descripteur de fichier sous-jacent C de l'une de ces trois "
"sorties, demandez-vous avant tout si vous êtes sûr de vous (cela peut, par "
"exemple, perturber le bon fonctionnement de modules qui font des opérations "
"d'entrée-sortie). Si c'est le cas, utilisez :func:`os.close` ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:654
2016-10-30 09:46:26 +00:00
msgid "Or you can use the numeric constants 0, 1 and 2, respectively."
msgstr ""
2019-08-30 14:33:11 +00:00
"Il est aussi possible de fermer respectivement les constantes numériques 0, "
"1 ou 2."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:658
2016-10-30 09:46:26 +00:00
msgid "Network/Internet Programming"
2019-08-30 14:33:11 +00:00
msgstr "Programmation réseau et Internet"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:661
2016-10-30 09:46:26 +00:00
msgid "What WWW tools are there for Python?"
msgstr "Quels sont les outils Python dédiés à au web ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:663
2016-10-30 09:46:26 +00:00
msgid ""
"See the chapters titled :ref:`internet` and :ref:`netdata` in the Library "
"Reference Manual. Python has many modules that will help you build server-"
"side and client-side web systems."
msgstr ""
2019-08-30 14:33:11 +00:00
"Référez-vous aux chapitres intitulés :ref:`internet` et :ref:`netdata` dans "
"le manuel de référence de la bibliothèque. Python a de nombreux modules pour "
"construire des applications web côté client comme côté serveur."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:669
2016-10-30 09:46:26 +00:00
msgid ""
"A summary of available frameworks is maintained by Paul Boddie at https://"
"wiki.python.org/moin/WebProgramming\\ ."
msgstr ""
2019-08-30 14:33:11 +00:00
"Un résumé des cadriciels disponibles est maintenu par Paul Boddie à "
"l'adresse https://wiki.python.org/moin/WebProgramming\\ ."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:672
2016-10-30 09:46:26 +00:00
msgid ""
"Cameron Laird maintains a useful set of pages about Python web technologies "
"at https://web.archive.org/web/20210224183619/http://phaseit.net/claird/comp."
"lang.python/web_python."
2016-10-30 09:46:26 +00:00
msgstr ""
2019-08-30 14:33:11 +00:00
"Cameron Laird maintient un ensemble intéressant d'articles sur les "
"technologies Python dédiées au web à l'adresse https://web.archive.org/"
"web/20210224183619/http://phaseit.net/claird/comp.lang.python/web_python."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:677
2016-10-30 09:46:26 +00:00
msgid "How can I mimic CGI form submission (METHOD=POST)?"
msgstr "Comment reproduire un envoi de formulaire CGI (``METHOD=POST``) ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:679
2016-10-30 09:46:26 +00:00
msgid ""
"I would like to retrieve web pages that are the result of POSTing a form. Is "
"there existing code that would let me do this easily?"
msgstr ""
"J'aimerais récupérer la page web d'un envoi de formulaire via POST. Existe-t-"
"il déjà du code qui pourrait m'aider à le faire facilement ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:682
2020-07-20 08:56:42 +00:00
msgid "Yes. Here's a simple example that uses :mod:`urllib.request`::"
2020-12-02 15:17:42 +00:00
msgstr "Oui. Voici un exemple simple d'utilisation de :mod:`urllib.request` ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:697
2016-10-30 09:46:26 +00:00
msgid ""
"Note that in general for percent-encoded POST operations, query strings must "
"be quoted using :func:`urllib.parse.urlencode`. For example, to send "
"``name=Guy Steele, Jr.``::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Remarquez qu'en général, la chaîne de caractères d'une requête POST encodée "
"avec des signes « % » doit être mise entre guillemets à l'aide de :func:"
2019-08-30 14:33:11 +00:00
"`urllib.parse.urlencode`. Par exemple pour envoyer ``name=Guy Steele, Jr."
"`` ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:705
2016-10-30 09:46:26 +00:00
msgid ":ref:`urllib-howto` for extensive examples."
2019-08-30 14:33:11 +00:00
msgstr ":ref:`urllib-howto` pour des exemples complets."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:709
2016-10-30 09:46:26 +00:00
msgid "What module should I use to help with generating HTML?"
msgstr "Quel module utiliser pour générer du HTML ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:713
2016-10-30 09:46:26 +00:00
msgid ""
"You can find a collection of useful links on the `Web Programming wiki page "
"<https://wiki.python.org/moin/WebProgramming>`_."
msgstr ""
"La `page wiki de la programmation web <https://wiki.python.org/moin/"
2019-08-30 14:33:11 +00:00
"WebProgramming>`_ (en anglais) répertorie un ensemble de liens pertinents."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:718
2016-10-30 09:46:26 +00:00
msgid "How do I send mail from a Python script?"
msgstr "Comment envoyer un courriel avec un script Python ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:720
2016-10-30 09:46:26 +00:00
msgid "Use the standard library module :mod:`smtplib`."
2019-08-30 14:33:11 +00:00
msgstr "Utilisez le module :mod:`smtplib` de la bibliothèque standard."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:722
2016-10-30 09:46:26 +00:00
msgid ""
"Here's a very simple interactive mail sender that uses it. This method will "
"work on any host that supports an SMTP listener. ::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Voici un exemple très simple d'un envoyeur de courriel qui l'utilise. Cette "
"méthode fonctionne sur tous les serveurs qui implémentent SMTP. ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:742
2016-10-30 09:46:26 +00:00
msgid ""
"A Unix-only alternative uses sendmail. The location of the sendmail program "
"varies between systems; sometimes it is ``/usr/lib/sendmail``, sometimes ``/"
"usr/sbin/sendmail``. The sendmail manual page will help you out. Here's "
"some sample code::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Sous Unix, il est possible d'utiliser *sendmail*. La localisation de "
"l'exécutable *sendmail* dépend du système ; cela peut-être ``/usr/lib/"
"sendmail`` ou ``/usr/sbin/sendmail``, la page de manuel de *sendmail* peut "
"vous aider. Par exemple ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:762
2016-10-30 09:46:26 +00:00
msgid "How do I avoid blocking in the connect() method of a socket?"
msgstr ""
2019-08-30 14:33:11 +00:00
"Comment éviter de bloquer dans la méthode ``connect()`` d'un connecteur "
"réseau ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:764
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`select` module is commonly used to help with asynchronous I/O on "
"sockets."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`select` est fréquemment utilisé pour effectuer des entrées-"
"sorties asynchrones sur des connecteurs réseaux."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:767
2016-10-30 09:46:26 +00:00
msgid ""
"To prevent the TCP connect from blocking, you can set the socket to non-"
2020-07-20 08:56:42 +00:00
"blocking mode. Then when you do the :meth:`socket.connect`, you will either "
"connect immediately (unlikely) or get an exception that contains the error "
"number as ``.errno``. ``errno.EINPROGRESS`` indicates that the connection is "
"in progress, but hasn't finished yet. Different OSes will return different "
2016-10-30 09:46:26 +00:00
"values, so you're going to have to check what's returned on your system."
msgstr ""
2019-08-30 14:33:11 +00:00
"Pour empêcher une connexion TCP de se bloquer, il est possible de mettre le "
2020-12-02 15:17:42 +00:00
"connecteur en mode lecture seule. Avec cela, au moment du :meth:`socket."
"connect`, la connexion pourra être immédiate (peu probable) ou bien vous "
"obtiendrez une exception qui contient le numéro d'erreur dans ``.errno``. "
"``errno.EINPROGRESS`` indique que la connexion est en cours, mais qu'elle "
"n'a pas encore aboutie. La valeur dépend du système d'exploitation, donc "
"renseignez-vous sur la valeur utilisée par votre système."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:774
2016-10-30 09:46:26 +00:00
msgid ""
2020-07-20 08:56:42 +00:00
"You can use the :meth:`socket.connect_ex` method to avoid creating an "
"exception. It will just return the errno value. To poll, you can call :"
"meth:`socket.connect_ex` again later -- ``0`` or ``errno.EISCONN`` indicate "
"that you're connected -- or you can pass this socket to :meth:`select."
"select` to check if it's writable."
2016-10-30 09:46:26 +00:00
msgstr ""
2020-12-02 15:17:42 +00:00
":meth:`socket.connect_ex` permet d'éviter la création de l'exception, et de "
"ne renvoyer que la valeur de *errno*. Pour vérifier l'état de la connexion, "
"utilisez encore une fois :meth:`socket.connect_ex` — ``0`` ou ``errno."
"EISCONN`` indiquent que la connexion est active  ou passez le connecteur en "
"argument de :meth:`select.select` pour vérifier si le connecteur est prêt à "
"recevoir des entrées."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:780
2016-10-30 09:46:26 +00:00
msgid ""
2020-07-20 08:56:42 +00:00
"The :mod:`asyncio` module provides a general purpose single-threaded and "
"concurrent asynchronous library, which can be used for writing non-blocking "
"network code. The third-party `Twisted <https://twistedmatrix.com/trac/>`_ "
"library is a popular and feature-rich alternative."
2016-10-30 09:46:26 +00:00
msgstr ""
2020-12-02 15:17:42 +00:00
"Le module :mod:`asyncore` propose une approche générique mono-processus "
"asynchrone pour écrire du code réseau non-bloquant. La bibliothèque tierce "
"`Twisted <https://twistedmatrix.com/trac/>`_ en est une alternative "
"plébiscitée, avec un grand nombre de fonctionnalités."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:788
2016-10-30 09:46:26 +00:00
msgid "Databases"
2019-08-30 14:33:11 +00:00
msgstr "Bases de données"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:791
2016-10-30 09:46:26 +00:00
msgid "Are there any interfaces to database packages in Python?"
msgstr ""
"Existe-t-il des modules Python pour s'interfacer avec des bases de données ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:793
2016-10-30 09:46:26 +00:00
msgid "Yes."
2017-05-24 20:55:30 +00:00
msgstr "Oui."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:795
2016-10-30 09:46:26 +00:00
msgid ""
"Interfaces to disk-based hashes such as :mod:`DBM <dbm.ndbm>` and :mod:`GDBM "
"<dbm.gnu>` are also included with standard Python. There is also the :mod:"
"`sqlite3` module, which provides a lightweight disk-based relational "
"database."
msgstr ""
2019-08-30 14:33:11 +00:00
"La distribution standard de Python fournit aussi des interfaces à des bases "
"de données comme :mod:`DBM <dbm.ndbm>` ou :mod:`GDBM <dbm.gnu>`. Il existe "
"aussi le module :mod:`sqlite3` qui implémente une base de données "
"relationnelle légère sur disque."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:800
2016-10-30 09:46:26 +00:00
msgid ""
"Support for most relational databases is available. See the "
"`DatabaseProgramming wiki page <https://wiki.python.org/moin/"
"DatabaseProgramming>`_ for details."
msgstr ""
2019-08-30 14:33:11 +00:00
"La gestion de la plupart des bases de données relationnelles est assurée. "
"Voir la page wiki `DatabaseProgramming <https://wiki.python.org/moin/"
"DatabaseProgramming>`_ pour plus de détails."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:806
2016-10-30 09:46:26 +00:00
msgid "How do you implement persistent objects in Python?"
msgstr "Comment implémenter la persistance d'objets en Python ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:808
2016-10-30 09:46:26 +00:00
msgid ""
"The :mod:`pickle` library module solves this in a very general way (though "
"you still can't store things like open files, sockets or windows), and the :"
"mod:`shelve` library module uses pickle and (g)dbm to create persistent "
"mappings containing arbitrary Python objects."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`pickle` répond à cela de manière large (bien qu'il ne soit "
"pas possible de stocker des fichiers ouverts, des connecteurs ou des "
"fenêtres par exemple), et le module :mod:`shelve` de la bibliothèque utilise "
"*pickle* et *(g)dbm* pour créer des liens persistants vers des objets Python."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:815
2016-10-30 09:46:26 +00:00
msgid "Mathematics and Numerics"
2019-08-30 14:33:11 +00:00
msgstr "Mathématiques et calcul numérique"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:818
2016-10-30 09:46:26 +00:00
msgid "How do I generate random numbers in Python?"
msgstr "Comment générer des nombres aléatoires en Python ?"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:820
2016-10-30 09:46:26 +00:00
msgid ""
"The standard module :mod:`random` implements a random number generator. "
"Usage is simple::"
msgstr ""
2019-08-30 14:33:11 +00:00
"Le module :mod:`random` de la bibliothèque standard comprend un générateur "
"de nombres aléatoires. Son utilisation est simple ::"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:826
2016-10-30 09:46:26 +00:00
msgid "This returns a random floating point number in the range [0, 1)."
msgstr ""
2019-08-30 14:33:11 +00:00
"Le code précédent renvoie un nombre à virgule flottante aléatoire dans "
"l'intervalle [0, 1[."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:828
2016-10-30 09:46:26 +00:00
msgid ""
"There are also many other specialized generators in this module, such as:"
msgstr "Ce module fournit beaucoup d'autres générateurs spécialisés comme :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:830
2016-10-30 09:46:26 +00:00
msgid "``randrange(a, b)`` chooses an integer in the range [a, b)."
2019-08-30 14:33:11 +00:00
msgstr "``randrange(a, b)`` génère un entier dans l'intervalle [a, b[."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:831
2016-10-30 09:46:26 +00:00
msgid "``uniform(a, b)`` chooses a floating point number in the range [a, b)."
msgstr ""
2019-08-30 14:33:11 +00:00
"``uniform(a, b)`` génère un nombre à virgule flottante aléatoire dans "
"l'intervalle [a, b[."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:832
2016-10-30 09:46:26 +00:00
msgid ""
"``normalvariate(mean, sdev)`` samples the normal (Gaussian) distribution."
2019-08-30 14:33:11 +00:00
msgstr "``normalvariate(mean, sdev)`` simule la loi normale (Gaussienne)."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:834
2016-10-30 09:46:26 +00:00
msgid "Some higher-level functions operate on sequences directly, such as:"
msgstr ""
"Des fonctions de haut niveau opèrent directement sur des séquences comme :"
2016-10-30 09:46:26 +00:00
#: faq/library.rst:836
2020-07-20 08:56:42 +00:00
msgid "``choice(S)`` chooses a random element from a given sequence."
2020-12-02 15:17:42 +00:00
msgstr "``choice(S)`` sélectionne au hasard un élément d'une séquence donnée."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:837
2020-07-20 08:56:42 +00:00
msgid "``shuffle(L)`` shuffles a list in-place, i.e. permutes it randomly."
2016-10-30 09:46:26 +00:00
msgstr ""
"``shuffle(L)`` mélange une liste en-place, c.-à-d. lui applique une "
2020-12-02 15:17:42 +00:00
"permutation aléatoire."
2016-10-30 09:46:26 +00:00
#: faq/library.rst:839
2016-10-30 09:46:26 +00:00
msgid ""
"There's also a ``Random`` class you can instantiate to create independent "
"multiple random number generators."
msgstr ""
2019-08-30 14:33:11 +00:00
"Il existe aussi une classe ``Random`` qu'il est possible d'instancier pour "
"créer des générateurs aléatoires indépendants."
#~ msgid ""
#~ "The :mod:`shutil` module contains a :func:`~shutil.copyfile` function. "
#~ "Note that on MacOS 9 it doesn't copy the resource fork and Finder info."
#~ msgstr ""
#~ "Le module :mod:`shutil` fournit la fonction :func:`~shutil.copyfile`. "
#~ "Sous MacOS 9, celle-ci ne copie pas le clonage de ressources ni les "
#~ "informations du chercheur."
2022-03-23 17:40:12 +00:00
#~ msgid ""
#~ "For Windows: use `the consolelib module <http://effbot.org/zone/console-"
#~ "index.htm>`_."
#~ msgstr ""
#~ "Pour Windows : utilisez le module `consolelib <http://effbot.org/zone/"
#~ "console-index.htm>`_."
#~ msgid ""
#~ "Aahz has a set of slides from his threading tutorial that are helpful; "
#~ "see http://www.pythoncraft.com/OSCON2001/."
#~ msgstr ""
#~ "Un ensemble de diapositives issues du didacticiel de Aahz sur les fils "
#~ "d'exécution est disponible à http://www.pythoncraft.com/OSCON2001/."
#~ msgid "http://pyserial.sourceforge.net"
#~ msgstr "http://pyserial.sourceforge.net"