windows - Python og vilkårlig kommandolinje muligheder

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver et kommandolinje-plugin-baseret program, hvor plugins vil give yderligere funktionalitet ud over det, jeg leverer.


Så for eksempel antage jeg skrev et simpelt script, der analyserede billeder og lagrede dem, og det er alt jeg gør. Så kan andre skrive et sæt scripts til at manipulere billedet og sætte sine scripts i et plugin.


Pluginet vil blive indlæst, og brugere kan få adgang til pluginet ved at angive navnet på kommandolinjen.


Det er ikke ualmindeligt, at scripts vil give yderligere muligheder for brugeren.
Så antag at i nogle år er der skrevet 20 forskellige plugins.


Nu vil alle forfattere tillade brugerne at levere muligheder, så hovedmotoren skal tage brugerens muligheder og sende dem til plugin'et, så det kan håndtere dem, men det vil.


For at holde det ensartet, kan de være enige om, at visse muligheder skal udføre en lignende operation. Ligesom '-o navn' skal sætte outputnavnet til 'navn'. De ville så gå i gang med at implementere deres egne muligheder og ting, som hovedmotoren ikke ved (selvfølgelig burde det ikke vide, hvad plugins gør)


Jeg bruger det udskårne getopt-modul, og det vil smide undtagelser, når jeg angiver en udefineret mulighed. Jeg har hørt om optparse og argparse, men jeg er ikke sikker på, om disse vil give brugeren mulighed for at angive eventuelle muligheder, han ønsker uden at koden kaster en undtagelse.


Hvordan kan jeg gøre det, så jeg kan angive en kommandolinje indstilling?

Bedste reference


argparse kan du delvist analysere en argumenteliste med parse\_known\_args metoden, returnere hvad der blev analyseret korrekt, sammen med en liste over de resterende argumenter. [5]

Andre referencer 1


Den løsning, du vil have, er nok at behandle kommandolinjeparametrene som en slags procesledning. Hvilke muligheder er også en del af, hvor mulighederne kan gå.


 command <global options> sub\_command <sub\_options> new\_sub\_command <new\_sub\_options>


hver kommando vil skifte indstillinger uden for sys.argv, indtil den finder en, der ikke forstår, eller en der ikke kan være en gyldig mulighed, og så stopper den at analysere argumenter, gør sit job og returnerer kontrol til plugin-dispatcheren .