Benutzereingaben und Befehlszeilenargumente
-
09-06-2019 - |
Frage
Wie habe ich einen Python-Skript, das a) eine Benutzereingabe annehmen kann und wie mache ich es b) liest Argumente, wenn von der Kommandozeile ausgeführt werden?
Lösung
Benutzereingabe lesen Sie der cmd
Modul versuchen kann leicht eine Schaffung Mini-Kommandozeileninterpreter (mit Hilfetexten und automatische Vervollständigung) und raw_input
( input
Python 3+) für eine Textzeile von dem Benutzer das Lesen .
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Kommandozeilen-Eingänge sind in sys.argv
. Versuchen Sie dies in Ihrem Skript:
import sys
print (sys.argv)
Es gibt zwei Module für die Kommandozeilenoptionen Parsen: (veraltet, da Python 2.7, verwenden Sie optparse
argparse
statt) und getopt
. Wenn Sie nur zur Eingabe von Dateien auf Ihrem Skript möchten, siehe die Macht der fileinput
.
Die Python-Bibliothek Referenz ist dein Freund.
Andere Tipps
var = raw_input("Please enter something: ")
print "you entered", var
oder für Python 3:
var = input("Please enter something: ")
print("You entered: " + var)
raw_input
ist nicht mehr verfügbar in Python 3.x Aber raw_input
wurde umbenannt input
, so dass die gleiche Funktionalität vorhanden ist.
input_var = input("Enter something: ")
print ("you entered " + input_var)
Der beste Weg, Befehlszeilenargumente zu verarbeiten, ist das argparse
Modul.
Mit raw_input()
auf Benutzereingaben zu erhalten. Wenn Sie importieren die readline module
Ihre Benutzer Zeilenbearbeitung haben und Geschichte.
Sorgfältige nicht die input
Funktion zu nutzen, es sei denn, Sie wissen, was Sie tun. Im Gegensatz zu raw_input
wird input
jeden Python Ausdruck annehmen, also ist es ein bisschen wie eval
Dieses einfache Programm hilft Ihnen, zu verstehen, wie die Benutzereingabe von der Kommandozeile zu füttern und zu Hilfe zu zeigen, auf ungültiges Argument übergeben.
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) Um die Quadratwurzel von 5 zu finden
C:\Users\Desktop>python -i emp.py 5
25
['emp.py', '5']
5
2) Passing ungültiges Argument andere als 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'>
Use 'raw_input' für die Eingabe von einer Konsole / Terminal.
Wenn Sie nur ein Befehlszeilenargument wie ein Dateiname oder etwas z.B.
$ python my_prog.py file_name.txt
, dann können Sie verwenden sys.argv ...
import sys
print sys.argv
sys.argv ist eine Liste, wobei 0 der Programmname ist, so in dem obigen Beispiel sys.argv [1] wäre "file_name.txt"
Wenn Sie auf Kommandozeilenoptionen voll haben, verwenden Sie das optparse Modul.
Pev
Wenn Sie Python ausführen <2.7, müssen Sie optparse , die als doc erklärt wird eine Schnittstelle zu den Befehlszeilenargumenten, die aufgerufen werden, wenn die Anwendung ausgeführt wird.
erstellenDoch in Python ≥2.7, optparse veraltet ist, und wurde mit dem ersetzten argparse wie oben gezeigt. Ein kurzes Beispiel aus der Dokumentation ...
Der folgende Code ist ein Python-Programm, das eine Liste von ganzen Zahlen nimmt und erzeugt entweder die Summe oder den 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)
Wie der Python 3.2 2.7, gibt es jetzt argparse für die Verarbeitung von Kommandozeilenargumenten.
Wenn es eine 3.x-Version ist dann einfach nur verwenden:
variantname = input()
Zum Beispiel wollen Sie zur Eingabe von 8:
x = input()
8
x wird gleich 8, aber es wird eine Zeichenfolge mit Ausnahme sein, wenn Sie es anders zu definieren.
So ermitteln Sie den Befehl convert verwenden können, wie:
a = int(x) * 1.1343
print(round(a, 2)) # '9.07'
9.07
In Python 2:
data = raw_input('Enter something: ')
print data
In Python 3:
data = input('Enter something: ')
print(data)
import six
if six.PY2:
input = raw_input
print(input("What's your name? "))