sys.Argv
I hovedsak Sys.Argv () er en liste over alle kommandolinjeinngangene. Når skriptet blir utført, kan du mate brukerinngangen på forskjellige måter, og en slik måte er via kommandolinjen. La oss i dette første tilfellet anta at vi har et enkelt manus som heter Main.py.
trykk (“Hello World”)Når vi utfører skriptet, vil vi legge til noen få kommandolinjeargumenter i tillegg til skriptnavnet. Hvis vi skulle utføre skriptet, ville vi få følgende:
$ Python3 Main.py hva har du opp til?Du merker her at kommandolinjens argumenter ikke forstyrret selve skriptet.
Så nå, la oss endre skriptet litt. Så antar at vi nå har et manus som heter Main.PY med følgende innhold:
Importer SysHvis vi skulle utføre skriptet, ville vi få følgende:
$ Python3 Main.pySom du kan se, får vi en liste med ett element i den fordi vi bare leverte den med ett element, skriptnavnet. Anta nå at vi gir det en litt annen kommandolinjeinngangsargumenter.
Importer SysHvis vi skulle utføre skriptet, ville vi få følgende:
$ Python3 Main.py hei verdenDet som skjer er at det henter alt vi ga via kommandolinjen eller alle kommandolinjeargumentene levert av brukeren. I mitt tilfelle la jeg til 'Hello World' etter navnet på manuset, og som sådan hentet det det til listen.
sys.Argv [0]
Sys.ARGV [0] er det første argumentet på listen. I alle tilfeller er det første argumentet alltid navnet på skriptet.
Importer SysNår vi utfører skriptet, skriver vi inn følgende:
$ Python3 Main.pysys.argv [n]
Alternativt kan det være lurt å hente et spesifikt kommandolinjeargument. For eksempel kan det være lurt å hente brukerens innspill via kommandolinjeargumenter når du skriver et Python -program. I dette scenariet henter vi de tre første kommandolinjens argumenter.
Importer SysNår vi utfører skriptet, skriver vi for eksempel følgende:
$ Python3 Main.Py Trevor Travis TimHer, Sys.ARGV [1] er det andre kommandolinjeargumentet, mens Sys.ARGV [2] er det tredje kommandolinjeargumentet, og SYS.ARGV [3] er det fjerde kommandolinjeargumentet. Dette er slik at selv om indeksen begynner på 0, og sys.argv [0] er navnet på skriptet.
Så hva om brukeren var forventet å legge inn n antall innganger og vi ikke visste hvor mange innganger det var? Anta at følgende skript ble skrevet:
Importer SysNår vi utfører skriptet, skriver vi for eksempel følgende:
$ Python3 Main.py hei Trevor Travis og TimHer, Sys.argv [1:] betyr at alle verdier fra sys.ARGV [1] brukes til slutten av listen. I dette tilfellet kan vi legge til så mange kommandolinjeargumenter som vi vil.
Strenger
Vær oppmerksom på at alle verdier fanget av variabel sys.ARGV er strenger. Så antar at vi ønsket å legge til tre tall som brukerinngangene.
Importer SysHvis vi skulle utføre skriptet, ville vi få følgende:
$ python3 main2.PY 3 4 5Det vi får er en typeerror. Dette er fordi alle verdiene oppnådd fra listen er "streng" -verdier mens vi krever heltallverdier for å legge til. For å rette opp dette, må vi konvertere strengene til heltall:
Importer SysHvis vi skulle utføre skriptet, ville vi få følgende:
$ python3 main2.PY 3 4 5Vi la til INT (SYS.Arg [n]) sørget for at vi konverterte strengen til et heltall.
Sys.ARGV -feil
En av de vanligste feilene som kastes (når vi ikke bruker SYS.Argv [1:] men spesifiser heller den første verdien ved hjelp av SYS.Argv [n]) er den til en indekserror (listeindeks utenfor rekkevidde). Hva denne feilen betyr er at kommandolinjeargumentene ikke ble spesifisert, og for å avverge denne feilen, må vi ta noen få forsiktighetsstrinn:
Importer SysNår vi utfører skriptet, skriver vi for eksempel følgende:
$ Python3 Main.Py Travis Trevor TimFor å avverge feilen, må vi justere lengden på kommandolinjens argumenter. I forrige eksempel har vi tre navn og et skriptnavn, noe som betyr at det er totalt 4 verdier. Dermed sier vi at hvis lengden er større enn 4 eller mindre enn 4, kan du be brukeren legge inn tre navn; ellers, skriv ut de tre navnene.
SYS -modulen er veldig viktig, da den tillater interaksjon med Python -tolken. Spesielt den variable SYS.ARGV er en liste som inneholder alle brukernes innlatende kommandolinjeargumenter. Sys.Argv [0] definerer navnet på skriptet i alle tilfeller. Selv om Sys.ARGV () brukes veldig ofte til å samle kommandolinjeargumenter, en annen enda bedre måte å samle kommandolinjeargumenter på er ved å bruke argparse. Men det er en historie for en annen dag!