it-swarm-eu.dev

Benutzereingabe und Befehlszeilenargumente

Wie habe ich ein Python -Skript, das a) Benutzereingaben akzeptieren kann, und wie kann ich es machen, b) Argumente einzulesen, wenn es über die Befehlszeile ausgeführt wird?

488
Teifion

Um Benutzereingaben zu lesen, können Sie das Modul cmd verwenden, um auf einfache Weise einen Mini-Befehlszeileninterpreter (mit Hilfetexten und automatischer Vervollständigung) und raw_input ( input für Python 3+) zum Lesen einer Textzeile vom Benutzer.

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

Befehlszeilen-Eingaben befinden sich in sys.argv. Versuchen Sie dies in Ihrem Skript:

import sys
print (sys.argv)

Es gibt zwei Module zum Parsen von Befehlszeilenoptionen: optparse (veraltet seit Python 2.7, verwenden Sie stattdessen argparse ) und getopt . Wenn Sie nur Dateien in Ihr Skript eingeben möchten, sehen Sie sich die Potenz von fileinput an.

Die Python-Bibliotheksreferenz ist dein Freund.

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

Oder für Python 3:

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

raw_input ist in Python 3.x nicht mehr verfügbar. Aber raw_input wurde in input umbenannt, sodass die gleiche Funktionalität vorhanden ist.

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

Dokumentation der Änderung

201
steampowered

Die beste Methode zum Verarbeiten von Befehlszeilenargumenten ist das Modul argparse.

Verwenden Sie raw_input(), um Benutzereingaben abzurufen. Wenn Sie den readline module importieren, verfügen Ihre Benutzer über eine Zeilenbearbeitung und einen Verlauf.

33
Dave Webb

Verwenden Sie die Funktion input nur, wenn Sie wissen, was Sie tun. Im Gegensatz zu raw_input akzeptiert input alle python Ausdrücke, also ist es ein bisschen wie eval

18
Vhaerun

Dieses einfache Programm hilft Ihnen dabei, die Benutzereingaben über die Befehlszeile einzugeben und Hilfe bei der Übergabe ungültiger Argumente anzuzeigen.

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 number

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'>
13
Viswesn

Verwenden Sie 'raw_input' für die Eingabe von einer Konsole/einem Terminal.

wenn Sie nur ein Befehlszeilenargument wie einen Dateinamen oder etwas, z.

$ python my_prog.py file_name.txt

dann kannst du sys.argv benutzen ...

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 "file_name.txt".

Wenn Sie vollständige Befehlszeilenoptionen wünschen, verwenden Sie das optparse-Modul.

Pev

10
Simon Peverett

Wenn Sie Python <2.7 ausführen, benötigen Sie optparse . Wie im Dokument erläutert, wird 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)
9
Matt Olan

Wenn es sich um eine 3.x-Version handelt, verwenden Sie einfach:

variantname = input()

Beispielsweise 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 wie folgt verwenden:

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

Ab Python 3.2 2.7 gibt es jetzt argparse für die Verarbeitung von Kommandozeilenargumenten.

6
GreenMatt

In Python 2:

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

In Python 3:

data = input('Enter something: ')
print(data)
2
Mark
import six

if six.PY2:
    input = raw_input

print(input("What's your name? "))
1
Will Charlton