Migrera optparse
-kod till argparse
¶
Modulen argparse
erbjuder flera funktioner på högre nivå som inte finns inbyggda i modulen optparse
, bland annat
Hantering av positionella argument.
Stödjer underkommandon.
Tillåter alternativa optionsprefix som
+
och/
.Hantering av noll-eller-mer- och ett-eller-mer-stilargument.
Producera mer informativa användningsmeddelanden.
Tillhandahåller ett mycket enklare gränssnitt för anpassade
type
ochaction
.
Ursprungligen försökte modulen argparse
upprätthålla kompatibilitet med optparse
. De grundläggande designskillnaderna mellan att stödja deklarativ bearbetning av kommandoradsalternativ (medan bearbetning av positionella argument lämnas till programkoden) och att stödja både namngivna alternativ och positionella argument i det deklarativa gränssnittet innebär dock att API:et har avvikit från optparse
med tiden.
Som beskrivs i Att välja ett bibliotek för argumentparsning, kan program som för närvarande använder optparse
och är nöjda med hur det fungerar bara fortsätta att använda optparse
.
Applikationsutvecklare som överväger att migrera bör också granska listan över inneboende beteendeskillnader som beskrivs i det avsnittet innan de beslutar om migrering är önskvärd eller inte.
För applikationer som väljer att migrera från optparse
till argparse
kan följande förslag vara till hjälp:
Ersätt alla
optparse.OptionParser.add_option()
-anrop medArgumentParser.add_argument()
-anrop.Ersätt
(options, args) = parser.parse_args()
medargs = parser.parse_args()
och lägg till ytterligareArgumentParser.add_argument()
-anrop för de positionella argumenten. Tänk på att det som tidigare kalladesoptions
nu iargparse
-kontexten kallasargs
.Ersätt
optparse.OptionParser.disable_interspersed_args()
genom att användaparse_intermixed_args()
istället förparse_args()
.Ersätt callback-åtgärder och nyckelordsargumenten
callback_*
med argumententype
elleraction
.Ersätt strängnamn för
type
nyckelordsargument med motsvarande typobjekt (t.ex. int, float, complex, etc).Ersätt
optparse.Values
medNamespace
ochoptparse.OptionError
ochoptparse.OptionValueError
medArgumentError
.Ersätt strängar med implicita argument som
%default
eller%prog
med Pythons standardsyntax för att använda lexikon för att formatera strängar, det vill säga%(default)s
och%(prog)s
.Ersätt OptionParser-konstruktorns argument
version
med ett anrop tillparser.add_argument('--version', action='version', version='<the version>')