Migrating optparse
code to argparse
¶
The argparse
module offers several higher level features not natively
provided by the optparse
module, including:
gère les arguments positionnels ;
Supporting subcommands.
permet d'utiliser les alternatives
+
ou/
comme préfixes d'option ;prend en charge la répétition de valeurs (zéro ou plus, un ou plus) ;
fournit des messages d'aide plus complets ;
fournit une interface plus simple pour les types et les actions personnalisés.
Originally, the argparse
module attempted to maintain compatibility
with optparse
. However, the fundamental design differences between
supporting declarative command line option processing (while leaving positional
argument processing to application code), and supporting both named options
and positional arguments in the declarative interface mean that the
API has diverged from that of optparse
over time.
As described in Choosing an argument parsing library, applications that are
currently using optparse
and are happy with the way it works can
just continue to use optparse
.
Application developers that are considering migrating should also review the list of intrinsic behavioural differences described in that section before deciding whether or not migration is desirable.
For applications that do choose to migrate from optparse
to argparse
,
the following suggestions should be helpful:
remplacer tous les appels à
optparse.OptionParser.add_option()
par des appels àArgumentParser.add_argument()
;remplacer
(options, args) = parser.parse_args()
parargs = parser.parse_args()
et ajouter des appels àArgumentParser.add_argument()
pour les arguments positionnels. Prenez note que les valeurs précédemment appeléesoptions
sont appeléesargs
dans le contexte d'argparse
;remplacer
optparse.OptionParser.disable_interspersed_args()
en appelantparse_intermixed_args()
plutôt queparse_args()
;remplacer les actions de rappel (callback actions en anglais) et les arguments nommés
callback_*
par des argumentstype
etactions
;remplacer les chaînes représentant le nom des types pour l'argument nommé
type
par les objets types correspondants (par exemple :int
,float
,complex
, etc) ;remplacer
optparse.Values
parNamespace
; etoptparse.OptionError
etoptparse.OptionValueError
parArgumentError
;remplacer les chaînes avec des arguments de formatage implicite (tels que
%default
ou%prog
) par la syntaxe standard de Python pour l'interpolation d'un dictionnaire dans les chaînes de formatage (c'est-à-dire%(default)s
et%(prog)s
) ;remplacer l'argument
version
du constructeur d'OptionParser
par un appel àparser.add_argument('--version', action='version', version='<la version>')
.