649 Stimmen

Wie erhalte ich Zugang zu Befehlszeilenargumenten?

Ich verwende Python, um meine Projekteinstellungen zu erstellen, aber ich brauche Hilfe bei der Eingabe der Befehlszeilenargumente.

Ich habe das im Terminal ausprobiert:

$python myfile.py var1 var2 var3

In meiner Python-Datei möchte ich alle Variablen verwenden, die eingegeben werden.

20voto

Mohamad Hamouday Punkte 1396

Mit "argparse" können Sie auf Argumente nach Schlüssel zugreifen.

Nehmen wir an, wir haben diesen Befehl:

python main.py --product_id 1001028

Um auf das Argument product_id zuzugreifen, müssen wir es zuerst deklarieren und dann abrufen:

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--product_id', dest='product_id', type=str, help='Add product_id')
args = parser.parse_args()

print (args.product_id)

Ausgabe:

1001028

8voto

lvadim01 Punkte 275

Wenn Sie es so nennen: $ python myfile.py var1 var2 var3

import sys

var1 = sys.argv[1]
var2 = sys.argv[2]
var3 = sys.argv[3]

Ähnlich wie bei Arrays haben Sie auch sys.argv[0] das immer das aktuelle Arbeitsverzeichnis ist.

6voto

Rohan Punkte 4493

Einige weitere Dinge, die mir einfallen.

Wie @allsyed sagte, enthält sys.argv eine Liste von Komponenten (einschließlich des Programmnamens). Wenn Sie also die Anzahl der über die Befehlszeile übergebenen Elemente wissen möchten, können Sie len() verwenden, um sie zu ermitteln. Auf dieser Grundlage können Sie Ausnahme-/Fehlermeldungen entwerfen, wenn der Benutzer eine bestimmte Anzahl von Parametern nicht übergeben hat.

Wenn Sie nach einer besseren Möglichkeit suchen, mit Kommandozeilenargumenten umzugehen, würde ich Ihnen empfehlen, sich https://docs.python.org/2/howto/argparse.html

6voto

Zunächst müssen Sie Folgendes importieren sys

sys - Systemspezifische Parameter und Funktionen

Dieses Modul ermöglicht den Zugriff auf bestimmte Variablen, die vom Interpreter verwendet und verwaltet werden, sowie auf Funktionen, die stark mit dem Interpreter interagieren. Dieses Modul ist immer noch verfügbar. Ich werde diesen Beitrag bearbeiten, falls dieses Modul nicht mehr funktioniert.

Und dann können Sie die Anzahl der Argumente oder die Liste der Argumente ausgeben.

Folgen Sie dem nachstehenden Skript:

#!/usr/bin/python

import sys

print 'Number of arguments entered :' len(sys.argv)

print 'Your argument list :' str(sys.argv)

Führen Sie dann Ihr Python-Skript aus:

$ python arguments_List.py chocolate milk hot_Chocolate

Und Sie werden das Ergebnis erhalten, das Sie sich gewünscht haben:

Number of arguments entered : 4
Your argument list : ['arguments_List.py', 'chocolate', 'milk', 'hot_Chocolate']

Ich hoffe, das hat jemandem geholfen.

0voto

Sollte das Modul sys (System) verwendet werden. die Argumente sind vom Typ str und befinden sich in einem Array

HINWEIS argv ist keine Funktion oder Klasse, sondern eine Variable, die sich ändern kann.

HINWEIS argv[0] ist der Dateiname

HINWEIS Weil Python in C geschrieben ist, hat C main(int argc , char *argv[]); aber argc im Sys-Modul wird nicht beendet

HINWEIS sys-Modul heißt System und ist in C geschrieben, also KEIN QUELLENBASIERTES MODUL

from sys import argv # or
from sys import * # or
import sys 

# code
print("is list") if type(sys.argv) == list else pass #  is list ,or
print("is list") if type(argv) == list else pass # is list
# arguments are str ( string )
print(type(sys.argv[1])) # str
# command : python filename.py 1 2 3
print(len(sys.argv)) # 3
print(sys.argv[1],'\n',sys.argv[2]'\n',sys.argv[3]) # following
'''
1
2
3
'''
# command : python filename.py 123
print(len(sys.argv)) # 1
print(sys.argv[1]) # following
'''
123
'''

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X