Ich möchte darauf hinweisen, dass frühere Antworten viele Annahmen über das Wissen des Benutzers gemacht haben. Diese Antwort versucht, die Frage auf einer Tutorial-Ebene zu beantworten.
Bei jedem Aufruf von Python sys.argvwird automatisch eine Liste von Zeichenfolgen angezeigt, die die Argumente (durch Leerzeichen getrennt) in der Befehlszeile darstellen. Der Name stammt aus der C-Programmierkonvention, in der argv und argc die Befehlszeilenargumente darstellen.
Wenn Sie sich mit Python vertraut machen, möchten Sie mehr über Listen und Zeichenfolgen erfahren. In der Zwischenzeit sollten Sie jedoch einige Dinge beachten.
Sie können einfach ein Skript erstellen, das die dargestellten Argumente druckt. Außerdem wird die Anzahl der Argumente mithilfe der lenFunktion in der Liste gedruckt .
from __future__ import print_function
import sys
print(sys.argv, len(sys.argv))
Das Skript erfordert Python 2.6 oder höher. Wenn Sie dieses Skript aufrufen print_args.py, können Sie es mit verschiedenen Argumenten aufrufen, um zu sehen, was passiert.
> python print_args.py
['print_args.py'] 1
> python print_args.py foo and bar
['print_args.py', 'foo', 'and', 'bar'] 4
> python print_args.py "foo and bar"
['print_args.py', 'foo and bar'] 2
> python print_args.py "foo and bar" and baz
['print_args.py', 'foo and bar', 'and', 'baz'] 4
Wie Sie sehen können, enthalten die Befehlszeilenargumente den Skriptnamen, jedoch nicht den Interpreternamen. In diesem Sinne behandelt Python das Skript als ausführbare Datei. Wenn Sie den Namen der ausführbaren Datei (in diesem Fall Python) kennen müssen, können Sie verwenden sys.executable.
Sie können den Beispielen entnehmen, dass es möglich ist, Argumente zu empfangen, die Leerzeichen enthalten, wenn der Benutzer das Skript mit in Anführungszeichen gekapselten Argumenten aufgerufen hat. Sie erhalten also die Liste der vom Benutzer angegebenen Argumente.
Jetzt können Sie in Ihrem Python-Code diese Liste von Zeichenfolgen als Eingabe für Ihr Programm verwenden. Da Listen durch nullbasierte Ganzzahlen indiziert werden, können Sie die einzelnen Elemente mithilfe der Listensyntax [0] abrufen. So erhalten Sie den Skriptnamen:
script_name = sys.argv[0] # this will always work.
Obwohl interessant, müssen Sie Ihren Skriptnamen selten kennen. Um das erste Argument nach dem Skript für einen Dateinamen zu erhalten, haben Sie folgende Möglichkeiten:
filename = sys.argv[1]
Dies ist eine sehr häufige Verwendung. Beachten Sie jedoch, dass ein IndexError fehlschlägt, wenn kein Argument angegeben wurde.
Mit Python können Sie auch auf einen Teil einer Liste verweisen. Um eine weitere Liste nur der vom Benutzer angegebenen Argumente abzurufen (jedoch ohne den Skriptnamen), können Sie dies tun
user_args = sys.argv[1:] # get everything after the script name
Darüber hinaus können Sie mit Python Variablennamen eine Folge von Elementen (einschließlich Listen) zuweisen. Wenn Sie also erwarten, dass der Benutzer immer zwei Argumente angibt, können Sie diese Argumente (als Zeichenfolgen) zwei Variablen zuweisen:
user_args = sys.argv[1:]
fun, games = user_args # len(user_args) had better be 2
Um Ihre spezifische Frage zu beantworten, handelt es sich also sys.argv[1]um das erste Befehlszeilenargument (als a string), das an das betreffende Skript übergeben wird. Es wird nicht zur Eingabe aufgefordert, aber es schlägt mit einem IndexError fehl, wenn in der Befehlszeile nach dem Skriptnamen keine Argumente angegeben werden.