Wie habe ich ein Python-Skript, das a) Benutzereingaben akzeptieren kann und wie ich es dazu bringe, b) Argumente einzulesen, wenn es über die Befehlszeile ausgeführt wird?
argparse
statt optparse
.
Wie habe ich ein Python-Skript, das a) Benutzereingaben akzeptieren kann und wie ich es dazu bringe, b) Argumente einzulesen, wenn es über die Befehlszeile ausgeführt wird?
argparse
statt optparse
.
Antworten:
Um Benutzereingaben zu lesen, können Sie das cmd
Modul zum einfachen Erstellen eines Mini-Befehlszeileninterpreters (mit Hilfetexten und automatischer Vervollständigung) und raw_input
( input
für Python 3+) zum Lesen einer Textzeile des Benutzers ausprobieren .
text = raw_input("prompt") # Python 2
text = input("prompt") # Python 3
Befehlszeileneingaben sind in sys.argv
. Versuchen Sie dies in Ihrem Skript:
import sys
print (sys.argv)
Es gibt zwei Module zum Parsen von Befehlszeilenoptionen: (seit Python 2.7 veraltet, optparse
argparse
stattdessen verwenden) und getopt
. Wenn Sie nur Dateien in Ihr Skript eingeben möchten, sehen Sie sich die Möglichkeiten von an fileinput
.
Die Python-Bibliotheksreferenz ist dein Freund.
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
, es ist eine eingebaute Funktion.
raw_input
ist in Python 3.x nicht mehr verfügbar. Wurde raw_input
aber umbenannt input
, so besteht die gleiche Funktionalität.
input_var = input("Enter something: ")
print ("you entered " + input_var)
import fileinput result=[] for line in fileinput.input(): result.append(line)
Der beste Weg, um Befehlszeilenargumente zu verarbeiten, ist das argparse
Modul.
Verwenden Sie raw_input()
diese Option , um Benutzereingaben abzurufen. Wenn Sie die importieren, haben readline module
Ihre Benutzer Zeilenbearbeitung und Verlauf.
Dieses einfache Programm hilft Ihnen zu verstehen, wie Sie die Benutzereingaben über die Befehlszeile eingeben und Hilfe beim Übergeben ungültiger Argumente anzeigen.
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) Übergabe eines anderen ungültigen Arguments als der 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'>
Verwenden Sie 'raw_input' für die Eingabe von einer Konsole / einem Terminal.
Wenn Sie nur ein Befehlszeilenargument wie einen Dateinamen oder etwas anderes möchten, z
$ python my_prog.py file_name.txt
dann können Sie sys.argv verwenden ...
import sys
print sys.argv
sys.argv ist eine Liste, in der 0 der Programmname ist. Im obigen Beispiel wäre sys.argv [1] also "Dateiname.txt".
Wenn Sie vollständige Befehlszeilenoptionen wünschen, verwenden Sie das optparse-Modul.
Pev
Wenn Sie Python <2.7 ausführen , benötigen Sie optparse , das, wie im Dokument erläutert, eine Schnittstelle zu den Befehlszeilenargumenten erstellt, die beim Ausführen Ihrer Anwendung aufgerufen werden.
In Python ≥2.7 ist optparse jedoch veraltet und wurde wie oben gezeigt durch argparse ersetzt . Ein kurzes Beispiel aus den Dokumenten ...
Der folgende Code ist ein Python-Programm, das eine Liste von Ganzzahlen verwendet und entweder die Summe oder das Maximum erzeugt:
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)
Ab Python 3.22.7 gibt es jetzt argparse für die Verarbeitung von Befehlszeilenargumenten.
Wenn es sich um eine 3.x-Version handelt, verwenden Sie einfach:
variantname = input()
Zum Beispiel möchten Sie 8 eingeben:
x = input()
8
x ist gleich 8, aber es wird eine Zeichenfolge sein, es sei denn, Sie definieren es anders.
Sie können also den Befehl convert verwenden, z. B.:
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? "))