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
typeochaction.
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 kalladesoptionsnu 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 argumententypeelleraction.Ersätt strängnamn för
typenyckelordsargument med motsvarande typobjekt (t.ex. int, float, complex, etc).Ersätt
optparse.ValuesmedNamespaceochoptparse.OptionErrorochoptparse.OptionValueErrormedArgumentError.Ersätt strängar med implicita argument som
%defaulteller%progmed Pythons standardsyntax för att använda lexikon för att formatera strängar, det vill säga%(default)soch%(prog)s.Ersätt OptionParser-konstruktorns argument
versionmed ett anrop tillparser.add_argument('--version', action='version', version='<the version>')