HOE MEER TE MOETEN VOOR GEBRUIKER INVOER EN READ-opdrachtregelargumenten

Hoe heb ik een Python-script dat A) Gebruikersinvoer accepteert en hoe ik het b) kan lezen in argumenten als het wordt uitgevoerd vanaf de opdrachtregel?


Antwoord 1, Autoriteit 100%

Om de gebruikersinvoer te lezen, kunt u de cmdmodule Voor het eenvoudig maken van een mini-opdrachtregelinterpreter (met help-teksten en autocompletion) en raw_input(inputvoor Python 3+) voor het lezen van een regel tekst van de gebruiker.

text = raw_input("prompt")  # Python 2
text = input("prompt")  # Python 3

Opdrachtregelangen zijn in sys.argv. Probeer dit in uw script:

import sys
print (sys.argv)

Er zijn twee modules voor het parseren opdrachtregelopties: optparse(verouderd sinds Python 2.7, gebruik argparsein plaats daarvan) en getopt. Als u alleen bestanden naar uw script wilt invoeren, zie de kracht van fileinput.

De Python Library referentie is uw vriend.


Antwoord 2, Autoriteit 86%

var = raw_input("Please enter something: ")
print "you entered", var

of voor Python 3:

var = input("Please enter something: ")
print("You entered: " + var)

Antwoord 3, Autoriteit 37%

raw_inputis niet langer beschikbaar in Python 3.x. Maar raw_inputwerd hernoemd input, dus dezelfde functionaliteit bestaat.

input_var = input("Enter something: ")
print ("you entered " + input_var) 

Documentatie van de wijziging


Antwoord 4, Autoriteit 6%

De beste manier om opdrachtregelargumenten te verwerken is de argparsemodule.

Gebruik raw_input()om gebruikersinvoer te krijgen. Als u de readline moduleuw gebruikers hebben laten bewerken en geschiedenis.


Antwoord 5, Autoriteit 3%

Dit eenvoudige programma helpt u bij het begrijpen van hoe u de gebruikersinvoer van de opdrachtregel wilt voeden en om hulp te tonen bij het doorgeven van ongeldig argument.

import argparse
import sys
try:
     parser = argparse.ArgumentParser()
     parser.add_argument("square", help="display a square of a given number",
                type=int)
    args = parser.parse_args()
    #print the square of user input from cmd line.
    print args.square**2
    #print all the sys argument passed from cmd line including the program name.
    print sys.argv
    #print the second argument passed from cmd line; Note it starts from ZERO
    print sys.argv[1]
except:
    e = sys.exc_info()[0]
    print e

1) Om de vierkantswortel van 5 te vinden

C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5

2) Ongeldig argument doorgeven behalve nummer

C:\Users\bgh37516\Desktop>python -i emp.py five
usage: emp.py [-h] square
emp.py: error: argument square: invalid int value: 'five'
<type 'exceptions.SystemExit'>

Antwoord 6, autoriteit 3%

Pas op dat u de functie inputniet gebruikt, tenzij u weet wat u doet. In tegenstelling tot raw_input, accepteert inputelke python-expressie, dus het is een beetje zoals eval


Antwoord 7, autoriteit 2%

Gebruik ‘raw_input’ voor invoer vanaf een console/terminal.

als u alleen een opdrachtregelargument wilt, zoals een bestandsnaam of iets dergelijks, bijv.

$ python my_prog.py file_name.txt

dan kun je sys.argv gebruiken…

import sys
print sys.argv

sys.argv is een lijst waarin 0 de programmanaam is, dus in het bovenstaande voorbeeld zou sys.argv[1] “file_name.txt” zijn

Als je volledige opties op de opdrachtregel wilt hebben, gebruik dan de optparse-module.

Pev


Antwoord 8, autoriteit 2%

Als je Python <2.7 gebruikt, heb je optparsenodig, wat als de doc Explains zal een interface maken voor de opdrachtregelargumenten die worden aangeroepen wanneer uw toepassing wordt uitgevoerd.

In Python ≥2.7 is de optalk verouderd en is vervangen door de Argparse Zoals hierboven weergegeven. Een snel voorbeeld van de documenten …

De volgende code is een Python-programma dat een lijst met gehele getallen inneemt
en produceert de som of de max:

import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('integers', metavar='N', type=int, nargs='+',
                   help='an integer for the accumulator')
parser.add_argument('--sum', dest='accumulate', action='store_const',
                   const=sum, default=max,
                   help='sum the integers (default: find the max)')
args = parser.parse_args()
print args.accumulate(args.integers)

Antwoord 9

Vanaf Python 3.2 2.7, er is nu Argparse voor het verwerken van opdrachtregelargumenten.


Antwoord 10

Als het een 3.X-versie is, gebruikt u gewoon gewoon:

variantname = input()

U wilt bijvoorbeeld 8:

invoeren

x = input()
8

X is gelijk aan 8, maar het wordt een reeks, behalve als u het anders definieert.

Dus u kunt de opdracht Converteren, zoals:

a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07

Antwoord 11

In Python 2:

data = raw_input('Enter something: ')
print data

in Python 3:

data = input('Enter something: ')
print(data)

Antwoord 12

import six
if six.PY2:
    input = raw_input
print(input("What's your name? "))

Other episodes