web-dev-qa-db-de.com

Befehlszeileneingabe in Python

Ist es möglich, zuerst das Programm auszuführen, dann auf die Eingabe des Benutzers in der Befehlszeile zu warten.

Run...

Process...

Input from the user(in command line form)...

Process...
30
Viin

Es ist überhaupt nicht klar, was das OP bedeutete (selbst nach einigem Hin und Her in den Kommentaren), aber hier sind zwei Antworten auf mögliche Interpretationen der Frage:

Für interaktive Benutzereingaben (oder übergebene Befehle oder umgeleitete Eingaben)

Verwenden Sie raw_input in Python 2.x und input in Python 3. (Diese sind integriert, sodass Sie nichts importieren müssen, um sie zu verwenden; Sie müssen nur das richtige für Ihre Python-Version verwenden.)

Zum Beispiel:

user_input = raw_input("Some input please: ")

Weitere Details finden Sie hier .

So haben Sie beispielsweise ein Skript, das so aussieht

# First, do some work, to show -- as requested -- that
# the user input doesn't need to come first.
from __future__ import print_function
var1 = 'tok'
var2 = 'tik'+var1
print(var1, var2)

# Now ask for input
user_input = raw_input("Some input please: ") # or `input("Some...` in python 3

# Now do something with the above
print(user_input)

Wenn Sie dies in foo.py gespeichert haben, können Sie das Skript einfach von der Befehlszeile aus aufrufen, es würde tok tiktok ausdrucken und dann um Eingabe bitten. Sie könnten bar baz eingeben (gefolgt von der Eingabetaste) und es würde bar baz drucken. So würde das aussehen:

$ python foo.py
tok tiktok
Some input please: bar baz
bar baz

Hier steht $ für die Befehlszeilen-Eingabeaufforderung (damit geben Sie das nicht wirklich ein), und ich drücke Enter, nachdem Sie bar baz eingegeben haben, als es nach einer Eingabe gefragt hat.

Für Befehlszeilenargumente

Angenommen, Sie haben ein Skript namens foo.py und möchten es mit den Argumenten bar und baz von der Befehlszeile aus aufrufen

$ foo.py bar baz

(Wiederum $ steht für die Eingabeaufforderung der Befehlszeile.) Anschließend können Sie dies in Ihrem Skript folgendermaßen tun:

import sys
arg1 = sys.argv[1]
arg2 = sys.argv[2]

Hier enthält die Variable arg1 die Zeichenfolge 'bar' und arg2'baz'. Das Objekt sys.argv ist nur eine Liste, die alles aus der Befehlszeile enthält. Beachten Sie, dass sys.argv[0] der Name des Skripts ist. Wenn Sie beispielsweise nur eine einzige Liste aller Argumente wünschen, verwenden Sie sys.argv[1:].

77
Mike

Nur die Eingabe

the_input = raw_input("Enter input: ")

Und das ist es. 

Wenn Sie eine Liste mit Eingaben erstellen möchten, können Sie Folgendes tun:

a = []

for x in xrange(1,10):
    a.append(raw_input("Enter Data: "))

In diesem Fall werden Sie 10 Mal nach Daten gefragt, um 9 Elemente in einer Liste zu speichern.

Ausgabe: 

Enter data: 2
Enter data: 3
Enter data: 4
Enter data: 5
Enter data: 7
Enter data: 3
Enter data: 8
Enter data: 22
Enter data: 5
>>> a
['2', '3', '4', '5', '7', '3', '8', '22', '5']

Sie können diese Liste grundsätzlich wie folgt durchsuchen (nachdem Sie diese Liste erstellt haben):

if '2' in a:
    print "Found"

sonst: print "Nicht gefunden".

Sie können '2' durch "raw_input ()" wie folgt ersetzen:

if raw_input("Search for: ") in a:
    print "Found"
else: 
    print "Not found"

Rohdaten aus der Eingabedatei über die Befehlszeilenschnittstelle übernehmen

Wenn Sie die Eingabe aus einer Datei übernehmen möchten, die Sie über die Befehlszeile eingeben (was normalerweise erforderlich ist, wenn Sie Code-Probleme für Wettbewerbe wie Google Code Jam oder das ACM/IBM ICPC ausführen)

example.py

while(True):
    line = raw_input()
    print "input data: %s" % line

In der Befehlszeilenschnittstelle:

example.py < input.txt

Hoffentlich hilft das.

12
Mr_Spock

Wenn Sie Python 3 verwenden, wurde raw_input in input geändert.

Python 3-Beispiel:

line = input('Enter a sentence:')
10
Mike Helmick

Starten Sie Ihr Skript mit der folgenden Zeile. Das Skript wird zuerst ausgeführt und dann wird der Python-Befehl Prompt angezeigt. An diesem Punkt stehen alle Variablen und Funktionen für die interaktive Verwendung und für Aufrufe zur Verfügung.

#!/usr/bin/env python -i

1
user8391127